PYTHON的list、tuple、dict、set数据结构

sisophon 2019-10-31 PM 57℃ 0条

每种编程语言都提供数据结构。在Python编程语言中,总共有4种内置数据结构。它们是列表,元组,字典和集合。它们中的每一个都有其自身的独特性。

数据结构是编程中必不可少的部分。因此,所有有关Python编程的好书都在某种程度上详细介绍了数据结构。

Python数据结构

list(列表)

在Python中存储项目的有序集合的数据结构称为列表。换句话说,列表包含一系列项目。您需要将所有用逗号分隔的项目放在方括号中,以使Python知道已指定列表。列表的一般语法为:

some_list = [item,item2,item3,…..,itemn]

任何列表可以具有任意数量的元素和不同的数据类型。此外,列表可以将另一个列表作为元素。这样的列表称为嵌套列表。例如,

some_nested_list = [item1,some_list,item3,…..,itemn]

在Python中创建列表后,可以从列表中搜索,添加和删除项目。列表有资格被标记为可变数据类型,因为可以通过添加或删除元素来更改它。

Python编程语言中的列表是使用对象和类的示例。例如,给整数变量赋值(例如22)是i,就是创建整数类的对象。因此,该列表也是Python中的一种类。

任何类都可以具有方法,这些方法仅在我们拥有该特定类的对象时才可以使用。例如,append()方法允许将项目添加到列表的末尾。

这里some_list是列表的名称,some item是要添加到列表的元素。一个类可以具有字段,这些字段是定义为仅与该类的实例一起使用的变量。以下是Python列表支持的各种方法:

>>>some_list = ['python','golang','c#']
>>>some_item = ['html','css','js']

append()–将元素添加到列表的末尾:

>>>some_list.append('php')
>>>some_list
['python', 'golang', 'c#', 'php']

clear()–从列表中删除所有元素:

>>>some_list.clear()
>>>some_list
[]

copy()–返回列表的浅表副本

>>>some_list_copy = some_list.copy()
>>>some_list_copy
['python', 'golang', 'c#']

count()–返回项目出现在列表中的次数。

>>>some_list.count('python')
1

extend()–将列表的所有元素添加到其他列表

>>>some_list.extend(some_item)
>>>some_list
['python', 'golang', 'c#', 'html', 'css', 'js']

index()–返回元素的索引(注意:如果同一元素在列表中多次出现,则返回第一个匹配项的索引)

>>>some_list.index('golang')
1
#如果查询列表中下一个golang的位置可以
>>>some_list = ['python','golang','c#','golang']
>>>some_list.index('golang',2)
3

insert()–将元素插入到列表中已定义的索引处

 >>>some_list.insert(4,'php')
 >>>some_list
 ['python', 'golang', 'c#', 'php']

pop()–从列表中删除并返回一个元素

>>>some_list.pop()
'c#'
>>>some_list
['python', 'golang']

注:如果pop里面没有加索引(pop(1)),它会从最后面的一个删除。

remove()–从列表中删除一个元素

>>>some_list.remove('c#')
>>>some_list
['python', 'golang']

reverse()–反转列表中所有元素的顺序

>>>some_list.reverse()
>>>some_list
['c#', 'golang', 'python']

sort()–以升序对列表中的所有元素进行排序:

>>>some_list.sort()
>>>some_list
['c#', 'golang', 'python']

注:列表有不同类型的数据的话,是不能进行排序的,比如str类型和int类型数据,排序的话会报错。

Tuple(元组)

与列表类似,元组是Python中的内置数据结构。但是,它不支持相同级别的扩展功能。列表和元组之间最重要的区别是可变性。与列表不同,元组是不可变的,即它们不能被修改。

通常,Python编程语言中的元组是使用括号定义的,每个项目之间用逗号分隔。尽管在元组中添加括号是可选的,但建议使用它来明确定义元组的结束和开始。元组的一般语法为:

some_tuple =(item1,item2,item3 ……..,itemn)

元组用于确定属于某个语句或用户定义函数的(一组)值不会改变的情况。

为了定义一个空的元组,使用一对空的括号。例如,

empty_tuple = ( )

用单个项目定义一个元组有点棘手。您需要在唯一的项目后面使用逗号指定相同的名称。这样做是为了允许Python在某个表达式中区分对象的元组和一对括号。

因此,具有单个项(例如项1)的元组(例如singleton_tuple)定义为:

singleton_tuple =(item1,)

与字符串索引相似,元组索引从0开始。与字符串一样,元组可以串联和切片。元组可用的方法有:

tuple1 = (1,'a')
tuple2 = (2,'b')

cmp()–比较两个元组的元素(在python 3.4.3中已经被替代了)
解析:cmp()已经被operator模块代替,在交互模式下使用时,需要导入模块

>>>import operator
lt(a,b) 相当于a<b  从第一个数字或字母(ASCII)比大小 less than(小于)

le(a,b)相当于a<=b less and equal(小于等于)

eq(a,b)相当于a==b  字母完全一样,返回True,  equal(等于)

ne(a,b)相当于a!=b  not equal(不等于)

gt(a,b)相当于a>b  greater than(大于)

ge(a,b)相当于a>=b greater and equal(大于等于)

注:返回的值是布尔值(False True) 不是-1 0 1
len() –给出一些元组的总长度

>>>len(tuple1)
1

max() –返回一个元组的最大值

>>>max(tuple1)  //报错  不同类型
>>>tuple1 = (1,2,3)
>>>max(tuple1)
3

min() –返回一个元组的最小值

>>>tuple1 = (1,2,3)
>>>min(tuple1)
1

tuple() –将某些列表转换为元组

>>>tuple(some_list)
('python', 'golang', 'c#')

顺序

列表和元组可以像字符串一样被称为序列。序列最突出的特征是成员资格测试和索引操作。后者允许直接从序列中提取项目。

Python提供了对三种类型的序列的支持。列表,字符串和元组。它们每个都支持切片操作。它允许检索序列的特定部分。

Dictionary(字典)

Python中的另一种内置数据结构类型是字典。它以键值对的形式存储数据。为字典定义的键必须唯一。尽管字典中的值可以是可变的或不可变的对象,但键只允许不可变的对象。

Python中的字典是使用括在花括号中的由逗号分隔的键/值对定义的。键和值使用冒号分隔。字典的一般语法为:

some_dictionary = {key1:value 1,key2:value 2,key3:value 3,…。,keyn:value n}

字典中的键/值对不遵循任何特定顺序。因此,您需要手动对它们进行排序以维护某种顺序。Python编程语言中定义的任何词典都是dict类的实例。

为了访问任何键值对,需要使用索引运算符指定键。del语句用于从字典中删除一个或多个键-值对。in操作符用于检查字典中是否存在键值对。

索引运算符还用于添加新的键值对。在函数中使用关键字参数与使用字典非常相似。

简单介绍几个方法:

some_dict = {'age':18,'sex':'male'}

get()-如果key不存在,可以返回None,或者自己指定的value

>>>> some_dict.get('age')
18

pop()-删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。


>>> some_dict.pop('age')
18
>>> some_dict
{'sex': 'male'}

Set(集合)

简单来说,集合是Python中简单对象的无序集合。除了可迭代和可变之外,集合没有重复的元素。Python中定义的任何集合都是集合类的实例。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

some_set = {"item1","item2 ","item3",…..,"itemn"}
或者
set(value)

通常,当集合中对象的存在比对象出现的顺序或频率(出现的次数)重要得多时,就会使用集合。

使用集合可以测试成员资格,例如检查一个集合是否是其他集合的子集,并找到两个集合之间的交集。Python中的集合遵循集合论的数学概念。
Python中有一种叫做冻结集的东西。一个冻结集是一个集,它只支持那些方法和操作符,这些方法和操作符产生的结果不会影响到一个或多个应用了相同结果的冻结集。集合支持的方法有:

term = {'php','python','js'}
term1 = {'php','python','html','css'}

add()–将一个项目添加到集合中(注意:由于集合没有重复值,因此要添加到集合中的项目一定不是该集合的成员。)

  >>>term.add('css')
  {'php', 'css', 'python', 'html'}

clear()–删除集合中的所有项目

>>>term.clear()
>>>trem
set()

difference()–返回具有调用集中的所有元素的集合,但不包含第二个集合的所有元素

 >>>term.difference(term1)
 {'js'}

intersection ()–返回两个集合的交集

>>>term.intersection(term1)
{'php', 'python'}

union()–返回两个集合的并集

>>> term.union(term1)
{'js', 'python', 'html', 'php', 'css'}
标签: PYTHON

非特殊说明,本博所有文章均为博主原创。

评论啦~