元组,字典和集合

tech2022-12-22  68

元组,字典和集合

文章目录

元组,字典和集合元组(tuple)元组的创建元组的解包 字典(dict)字典的创建查询字典里的值(value)字典的使用len()修改键的值增加删减更新字典get() 集合(set)集合的创建集合的使用add(x)remove(x)pop()clear()update(集合) 集合的运算&(交集运算)|(并集运算)-(差集运算)^(异或集)<(<=)和>(>=)


元组(tuple)

元组是一个不可变序列,一般当我们不希望存储的数据改变时,我们使用元组,其他情况一般使用列表。

# tup = (1,2,4,5,6) # tup[3] = 12 #TypeError: 'tuple' object does not support item assignment # print(tup)
元组的创建
# tup = (1,2,4,5,6) # tup = 1,2,3,4,5 # tup = 10, # 当元组不为空时,里面至少有一个逗号 # print(tup,type(tup))
元组的解包
# 需要与元组元素个数相同的变量 # tup = (1,2,3,4,5) # a,b,c,d,e = tup # a,b = tup #ValueError: too many values to unpack # print(a,b) # 在变量前面加上*号,可以使多个元组的元素值赋予这个变量,以列表的形式 # a,b,*c = tup # a,*b,c = tup # *a,b,c = tup # print(a,b,c)

字典(dict)

字典是可变序列,与列表类似都是存储数据的容器,字典的存储性能较差,查询性能较好,与列表相反字典是一种映射结构,字典里每个值(value)都有唯一的一个名字对应,通过找到这个名字就可以访问值;我们称这个名字为键(key)字典里的每一项都有键值对组成(key-value),因此我们又称字典为键值对结构字典里的值可以是任何对象,字典的键可以是任何不可变对象字典的键是唯一的,如果出现重复地,后面出现的会覆盖前面的
字典的创建
# dct = {'name':'Sleet','age':19,'gender':'男'} # 如果字典里的项较多,为方便阅读,通常如下写法 # dct = { # 'name':'Sleet', # 'age':19, # 'gender':'男' # } # dct = dict(name='Sleet',age=19,gender='男') # dct = dict([('name','Sleet'),('age',19),('gender','男')]) # print(dct)
查询字典里的值(value)
# dct = {'name':'Sleet','age':19,'gender':'男'} # print(dct['name']) # key = 'name' # print(dct[key])
字典的使用
len()
# dct = {'name':'Sleet','age':19,'gender':'男'} # 返回字典长度 # print(len(dct))
修改键的值
# dct = {'name':'Sleet','age':19,'gender':'男'} # dct['name'] = 'Jerry' # dct['hobby'] = 'basketball' # 如果修改的键不存在,则自动进行创建
增加
# dct = {'name':'Sleet','age':19,'gender':'男'} # dct['hobby'] = 'basketball' # r = dct.setdefault('hobby','basketball') # 有返回值,返回值为键值对的值 # dct.setdefault('name','Jerry') # 如果字典中存在该键,则不进行任何操作
删减
# dct = {'name':'Sleet','age':19,'gender':'男'} # dct.popitem() # 随机删除字典中的一项(一般都是从后面开始删除) # dct.popitem() # {'name': 'Sleet', 'age': 19} # r = dct.popitem() # 有返回值,返回值的形式为元组,返回的是双值子序列 # pop() # 通过key来删除项 # dct.pop('name') # r = dct.pop('hobby','没有这个键') # 如果不存在键,可以返回第二个参数 # r = dct.pop('name') # 有返回值,返回值为键值对的值 # clear() # 清空字典 # dct.clear() # del dct['name'] # 用关键字进行删除
更新字典
# dct = {'name':'Sleet','age':19,'gender':'男'} # update(字典) # 用另一个字典来更新当前字典 # dct_1 = { # 'name':'Jerry', # 'hobby_1':'basketball', # 'hobby_2':'tennis', # 'hobby_3':'badminton' # } # dct.update(dct_1) # 如果更新的字典里有与原字典重名的键,则更新后会进行覆盖 # print(dct)
get()
# 根据键来获取字典的值,第二个参数可以指定一个值,当获取不到值的时候返回这个值,默认为None # value = dct.get('name') # value = dct.get('hobby') # value = dct.get('hobby','没有这个键') # print(value)

集合(set)

集合与列表类似

不同点:

集合存储的对象是不可变的集合里的元素是无序的(不是按照插入的顺序进行排序)集合的对象是不能重复的
集合的创建
# 集合的创建 # s = {1,2,3,4,5} # s = set([1,2,3,4,5]) # s = set('hello') # 无重复元素 # s = set(1,2,3) # TypeError: set expected at most 1 argument, got 3 # s = set(1) # TypeError: 'int' object is not iterable # s = {100,10,1,2,3,4} # 无序 # s = {1,1,2,3,4,4} # 元素不重复 # print(s) 可以通过s = {1,2,…}创建;注意:当s = {}时创建的是空的字典可以通过s = set()创建;如果没有传递参数,则返回set(),这就是空集合;set()传递的参数只能有一个,而且必须是可迭代的对象
集合的使用
add(x)

add(x):在集合中增加一个元素

# s = {1,2,3,4,5} # s.add(6) # print(s)
remove(x)

remove(x):删除集合中的指定元素

# s = {1,2,3,4,5} # s.remove(5) # print(s)
pop()

pop():随机删除集合中的一个元素,有返回值,返回被删除的元素

# s = {'a','b','c','d',1,2,3,4,} # r = s.pop() # print(r) # print(s)

clear()

clear():清空集合

# s = {'a','b','c','d',1,2,3,4,} # s.clear() # print(s)
update(集合)

用另一个集合更新当前集合

# s = {'a','b','c','d',1,2,3,4,} # s2 = set('python') # s.update(s2) # print(s) # print(s2)
集合的运算
&(交集运算)
# s1 = {1,2,3,4} # s2 = {3,4,5,6} # r = s1 & s2 # print(r)
|(并集运算)
# s1 = {1,2,3,4} # s2 = {3,4,5,6} # r = s1 | s2 # print(r)
-(差集运算)
# s1 = {1,2,3,4} # s2 = {3,4,5,6} # r = s1 - s2 # print(r)
^(异或集)
# s1 = {1,2,3,4} # s2 = {3,4,5,6} # r = s1 ^ s2 # print(r)
<(<=)和>(>=)
a<b:a是b的真子集a<=b:a是b的子集a>b:a是b的真超集a>=b:a是b的超集 # s3 = {1,2,3,4} # s4 = {1,2,3,4} # s5 = {1,2,3,4,5} # print(s3<=s4) # print(s3<s4) # print(s3<s5)

以上内容为个人总结+资料查找 欢迎各位批评指正~

最新回复(0)