
1.
元组:不可变的序列
#元组的创建方式tu1 = (1, 0.1, 'a', b'1', [], True, None) #元素可以为任意类型tuple(iterable) #元素只能为可迭代对象
#元组与列表相同操作tu1 = (1, 0.1, 'a', b'1', [], True, None)print(tu1[0]) #1 访问元素print(tu1[::-1]) #(None, True, [], b'1', 'a', 0.1, 1) 切片print(tu1.count(1)) #2 统计元组中元素出现的次数 True==1tu1.index(1, 2)#5 索引元素的第几次出现的位置print(tuple(reversed(tu1)))#(None, True, [], b'1', 'a', 0.1, 1) reversed()函数 反转迭代器的序列值 返回反向迭代器tu2 = (1, 8, 3, 5, 4)print(sorted(reverse=False,tu2))#[1, 3, 4, 5, 8] sorted() 排序 reverse的值默认为False,即升序排列,为reverse的值为True时则降序排列tu = (1, 2)tu0 = (2, 5)print(tu + tu0) #(1, 2, 2, 5) 两个拼接成一个新的元组print(tu * 3) 同一个元组中多次拼接成一个新的元组
元组中不允许修改、新增元素
不允许删除某个元素,但可以删除整个元组
tu = (1, 2, 3)del tu #删除整个元组
#元组与列表的相互转换 只能转换可迭代的对象list(iterable) #强转为列表tuple(iterable) #强转为元组
字典:可变序列
基于哈希散散列,用键值对,可以很快查取、插入、修改、删除
元素的个数、值的类型都没有限制
但是key必须为不可变对象,例如int,str,bytes,tuple, 最多的是str
list,dict,set不可作为key,key必须是唯一的(重复会覆盖),value就duck不必
#字典的创建dic = {key1 : value1, key2 : value2 }dict(key1 = value1, key2 = value2)dict([key1 : value1], [key2 : value2])dict([(key1, value1),(key2, value2)]) #mapping映射 不太懂
map(func, *iterables) #将 iterables 里面的元素逐个传到 func 里面做处理zip(iter1 [,iter2 [...]]):#将iter1 iter2 中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
字典是集合类型,不是序列类型,不能索引下标,不能切片
dic[key1] #取值 key1不存在会报错dic[new_key] = new_value #增加dice[key1] = new_value #修改 覆盖del dic[key1] #删除key1dic.pop(key1) #删除key1del dic #删除字典dic.clear() #清空字典
常见操作
dic.get(key1) #访问key1的值,key1不存在不会报错 返回Nonedic.items() #列出所有key和value,多用于循环dic.keys() #列出所有keydic.values() #列出所有value
2、3:
li1 = ['name', 'age', 'addr']li2 = ['Khalil', 24, 'Wuhan']dic = dict(zip(li1, li2))print(dic)print(dic.keys(), dic.values())
li1 = ['name', 'age', 'addr']li2 = ['Khalil', 24, 'Wuhan']dic = dict(map(lambda key, value: [key, value], li1, li2))#抄的的代码 lamda是啥 迷迷糊糊print(dic)print(dic.keys(), dic.values())
