欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python中的list(列表)、tuple(元组)、dict(字典)和set(集合)

程序员文章站 2022-06-27 21:08:19
列表(list)、元组(tuple)、字典(dict)和集合(set)是Python中内置的四种结构化数据类型。list和tuple都是有序表,但tuple中的内容是不能修改的。字典类型dict存储的内容是键-值(key-value)对。集合则具有无序、不重复的特点...

1. List

列表,即list是Python中内置的一种结构化数据类型。它是一种有序的集合(注意其中元素的类型不要求相同),可以随时添加和删除其中的元素。

1 ) 初始化

list1 = []            #一个空列表
list2 = [1, 2, 3, 5]  #一个非空列表

 

2 ) 基本操作

  • 追加元素到末尾:
list1.append(6)
  • 把元素插入到指定的位置,其中第一个参数是指示具体位置的索引:
list2.insert(3, 4)
  • 用一个列表来扩展另外一个列表,即把一个列表中的所有元素追加到另外一个列表的末尾:
list2.extend(list1)

 

3 ) 列表解析(list comprehension)

从一个列表中筛选出符合条件的元素,例如:

list3 = [x for x in list2 if x%2==0]

 


2. Tuple

元组也是一种有序列表,它与列表很相似,但是元组中的内容是不能修改的

tuple1 = (1, 2)
tuple1 = (1, )   #注意只有一个元素的tuple不能写成 tuple1 = (1)

或者有时你需要把把一个list转换成tuple,例如:

tuple2 = tuple(list2)

 


3. Dict

Python中内置了字典类型dict,即dictionary,在其他语言中也称为map,使用键-值(key-value)对存储,具有极快的查找速度。

 

1 ) 初始化与访问

dict1 = {}                                    #一个空字典
dict2 = {'Tom': 95, 'Jack': 75, 'Mary': 85}   #一个非空字典

通过键-值对的赋值,可以向字典中添加新元素(如果原键不存在的化),如果原键本就存在于字典中,那么赋值就相当于将原有值设置成新值(因为一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉),例如:

dict1['color'] = 'red'
dict2['Tom'] = 100

另外,如果要取某个key对应的value时,若key不存在,那么该访问将报KeyError错误。要避免这种错误,有两种方法:

i)访问前,先通过in判断key是否存在:

if 'Tom' in dict2:
    print('Yes')

ii)通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:

dict2.get('James')
dict2.get('James', -1)

 

2 ) 删除

删除字典中的某一项:

del dict2['Mary']

 

3 ) 遍历

两个重要的方法:keys() 返回字典的所有的key,values() 返回字典所有的值,例如

for k in dict2.keys():
    print(k)

 


4. Set

Set就是集合,它具有无序不重复的特点。

 

1 ) 初始化

可以用一个列表来初始化一个集合,但是集合会对原列表做去重操作:

s1 = set([1, 1, 2, 2, 3, 3])   # {1, 2, 3}
s2 = set()                       # 初始化一个空集

 

2 ) 基本操作

通过add(key)方法可以添加元素到set中,若添加了重复的元素,则不会产生效果;通过remove(key)方法可以删除元素:

s1.add(4)
s1.remove(1)

对于set来说,数学上的定义的集合操作(包括求交、并等),Python中也是支持的:

s1 = set([1, 2, 3])
s2 = set([2, 3, 4])

s1 & s2    #{2, 3}
s1 | s2    #{1, 2, 3, 4}

 

3 ) hashable 与 unhashable

为了追求高的搜索效率,Set中的元素必须是可哈希的(hashable)。基本数据类型都属于此类,Tuple也是如此。但列表是unhashable的。因此,“列表的列表”是可行的,但“列表的集合”则是不可行的。通常,如果集合中的元素是一个有序表,那么需要使用tuple类型。

listoflists = [[0, 1, 2], [2, 3, 5, 6], [0, 1, 2], [1, 2, 3, 4, 5]]
setoftuples = {tuple(l) for l in listoflists} #{(0, 1, 2), (1, 2, 3, 4, 5), (2, 3, 5, 6)}

 

 

本文地址:https://blog.csdn.net/baimafujinji/article/details/50676393