1、基础数据类型汇总补充
str
int
list
bool
dict
tuple
2、集合 set {}
可变的数据类型,(不可哈希)里面的元素必须是不可变的数据类型,无序,不重复
以下是集合最重要的两点:
去重,把一个列表变成集合,就自动去重了。
关系测试,测试两组数据之前的交集、差集、并集等关系。
2.1 集合的创建
1 set1 = set ({1,2,'job'}) 2 set2 = {1,2,'job'} 3 4 print(set1,set2)
2.2 集合的增加
1 #add 2 set1 = {'杨过','周伯通','小龙女','黄蓉','郭靖'} 3 set1.add('李莫愁') 4 print(set1) 5 6 #update 迭代增加 7 set1.update('孙不二') 8 print(set1)
2.3 集合的删
1 #remove 删除一个元素 2 set1.remove('杨过') 3 print(set1) 4 5 #pop 随机删除 6 set1.pop() 7 print(set1) 8 9 #clrar 清空 10 set1.clear() 11 print(set1) 12 13 #del 14 del set1 15 print(set1)
2.4 集合其它操作
交集(& 或者 intersection)
1 set1 = {'杨过','周伯通','小龙女','黄蓉','郭靖'} 2 set2 = {'王重阳','林朝英','小龙女'} 3 print(set1&set2) 4 print(set1.intersection(set2))
并集(| 或者 union)
1 set1 = {'杨过','周伯通','小龙女','黄蓉','郭靖'} 2 set2 = {'王重阳','林朝英','小龙女'} 3 print(set1|set2) 4 print(set1.union(set2))
差集(- 或者 difference)
1 set1 = {'杨过','周伯通','小龙女','黄蓉','郭靖'} 2 set2 = {'王重阳','林朝英','小龙女'} 3 print(set1-set2) 4 print(set1.difference(set2)) #{'黄蓉', '郭靖', '周伯通', '杨过'}
反交集 (^ 或者 symmetric_difference)
1 set1 = {'杨过','周伯通','小龙女','黄蓉','郭靖'} 2 set2 = {'王重阳','林朝英','小龙女'} 3 print(set1^set2) 4 print(set1.symmetric_difference(set2))
子集与超集
1 set1 = {1,2,3} 2 set2 = {1,2,3,4,5,6} 3 4 print(set1 < set2) 5 print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 6 7 print(set2 > set1) 8 print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。
frozenset不可变集合,让集合变成不可变类型。
s=frozenset('job') print(s,type(s))
3、深浅copy
赋值运算,l1与l2指向的是同一个内存地址,所以他们是完全一样的。
1 l1 = [1,2,3,['john','job']] 2 l2 = l1 3 4 l1[0] = 111 5 print(l1) 6 print(l2)
浅拷贝copy 第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。
1 l1 = [1,2,3,['john','job']] 2 l2 = l1.copy() 3 print(l1,id(l1)) 4 print(l2,id(l2)) 5 6 l1[1] = 222 7 print(l1,id(l1)) 8 print(l2,id(l2)) 9 10 l1[3][0]='华仔' 11 print(l1,id(l1[3])) 12 print(l1,id(l2[3]))
深拷贝 deepcopy 两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
1 import copy 2 l1 = [1,2,3,['barry','alex']] 3 l2 = copy.deepcopy(l1) 4 5 print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2915377167816 6 print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2915377167048 7 8 l1[1] = 222 9 print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2915377167816 10 print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2915377167048 11 12 l1[3][0] = 'wusir' 13 print(l1,id(l1[3])) # [1, 222, 3, ['wusir', 'alex']] 2915377167240 14 print(l2,id(l2[3])) # [1, 2, 3, ['barry', 'alex']] 2915377167304