day7
对于元祖来说,如果只有一个元素并且没有逗号,此数据是什么类型,该表达式就是什么类型
对于list,在循环一个列表时,不要进行删除的动作,容易出错,一旦删除,索引就会改变,用倒序删除 for i in range(len(li)-1,-1,-1)
dic = dict.fromkeys('abc','alex')
形成三个键(abc)都对应alex
fromkeys形成的键对应的都是一个,一个该变都会改变
循环字典中不能增加或删除此字典的键值对,可以将有k的键值对添加到列表中在操作
数据转换:
int str bool
str list split join
li = list(tu)
tu--->str tu元素必须为字符串 s = ''.join(tu)
集合set
是个数据类型,不重复,无序,它里面元素是可哈希的,它本身是不可哈希的,不能作为字典的key
作用:1.去重 li = list(set(li))再用sort排序
2.数据关系的测试
增:set1.add('xxx')
.update()迭代增加
删 .remove()
.pop()随机删除,有返回值
.clear() 变成set()空集合
del set1
查:for i in set1:
并集:print(set1|set2)
print(set1.union
交集:print(set1&set2)
print(set1.intersection(set2))
反交集:print(set1^set2)
print(set1.symmetric_difference(set2))
差集:print(set1-set2)
子集:print(set1.issubset(set2))
父集:print(set2.issuperset(set1))
set2 = frozenset(set1)
forzenset类型,不可变,可哈希,可以转字典的键
对于赋值运算:指向的是同一个内存地址,字典、列表、集合都一样
copy的不是指向一个,而是在内存中创建一个新的地址
l2 = l1.copy()
对于浅copy来说,第一层创建的是新的内存地址,从第二层开始,全部指向同一个内存地址,所以对第二层及以上,保持一致性
deep.copy不管多少层都创建新的内存地址,改变一个另一个不变
l2 = copy.deepcopy(l1)
切片是浅copy