集合:可变的数据类型,它里面的元素必须是不可变的数据类型,无序,不重复
1:集合的创建
1 set1 = set({1,2,3,'barry'}) 2 set2 = {1,2,'barry'} 3 print(set1,set2) #输出结果:{1, 2, 3, 'barry'} {1, 2, 'barry'}
2:集合的增
1 add()方法增加 2 set1 = {'alex', 'wusir', 'ritian', 'egon', 'barry'} 3 set1.add('python') 4 print(set1) #输出结果:{'barry', 'alex', 'ritian', 'wusir', 'egon', 'python'}
1 update:迭代着增加 2 set1 = {'alex', 'wusir', 'ritian', 'egon', 'barry'} 3 set1.update('A') 4 print(set1) #输出结果:{'ritian', 'barry', 'alex', 'wusir', 'A', 'egon'} 5 set1.update('老师') 6 print(set1) #输出结果:{'ritian', 'barry', 'alex', '师', 'wusir', '老', 'A', 'egon'} 7 set1.update([1,2,3]) 8 print(set1) #输出结果:{1, 2, 'ritian', 'barry', 'alex', '师', 3, 'wusir', '老', 'A', 'egon'}
对比列表中的迭代添加
1 #extend() 迭代的去添加 2 li = ['python', 'java', 'c++'] 3 li.extend('aaaaa') 4 print(li) #输出结果:['python', 'java', 'c++', 'a', 'a', 'a', 'a', 'a']
对比字典中的update()
1 ###》》》》改 2 3 #利用键值对修改,有键则覆盖,无键则添加 4 5 #update 只可意会不可言传 6 dic1 = { 7 'name' : 'python', 8 'age' : '1981', 9 'sex' : 'male' 10 } 11 dic2 = { 12 'name' : 'java', 13 'hobby' : 'coding' 14 } 15 16 print(dic2.update(dic1)) #输出结果:None 17 print(dic1) #输出结果:{'name': 'python', 'age': '1981', 'sex': 'male'} 18 print(dic2) #输出结果:{'name': 'python', 'hobby': 'coding', 'age': '1981', 'sex': 'male'}
3:集合的删
1 set1 = {'alex', 'wusir', 'ritian', 'egon', 'barry'} 2 set1.remove('alex') #删除一个元素 3 print(set1) #输出结果:{'barry', 'ritian', 'egon', 'wusir'} 4 set1.pop() #随机删除一个元素 5 print(set1) #输出结果:{'ritian', 'egon', 'wusir'} 6 set1.clear() #清空集合 7 print(set1) #输出结果:set() 8 del set1 #删除集合 9 print(set1) #输出结果:(报错) print(set1) 10 # NameError: name 'set1' is not define
对比列表当中的pop(),remove(),clear(),del
1 #》》》》》》删 2 3 #pop() 4 li = ['python', 'java', 'c++'] 5 li.pop(1) 6 print(li) #输出结果:['python', 'c++'],若li.pop(),则默认删除最后一个元素 7 8 #remove() 9 li = ['python', 'java', 'c++'] 10 li.remove('java') 11 print(li) #输出结果:['python', 'c++'] 12 13 #del:按照切片的位置删除 14 15 li = ['python', 'java', 'c++'] 16 del li[1:2] 17 print(li) #输出结果:['python', 'c++'] 18 19 #clear(): 清空列表 20 21 li = ['python', 'java', 'c++'] 22 li.clear() 23 print(li) #输出结果: []
对比字典中的pop(),clear()
1 #pop()方法 2 dic1 = { 3 'name' : 'python', 4 'age' : '1981', 5 'sex' : 'male' 6 } 7 dic1.pop('name') #有这个键的话则默认返回值为键值‘python’ 8 print(dic1) #输出结果:{'age': '1981', 'sex': 'male'} 9 print(dic1.pop('name','没有这个')) #如果没有需要删除的键,默认返回None,也可自定义 输出结果:没有这个
1 #clear() 清空字典,同list的clear差不多 2 dic1 = { 3 'name' : 'python', 4 'age' : '1981', 5 'sex' : 'male' 6 } 7 print(dic1.clear()) #输出结果:None 8 print(dic1) #输出结果:{}
4:集合的其他操作
1 交集(& 或者 intersection) 2 set1 = {1, 2, 3, 4, 5} 3 set2 = {4, 5, 6, 7, 8} 4 print(set1 & set2) #输出结果:{4, 5} 5 print(set1.intersection(set2)) #输出结果:{4, 5}
1 #差集(- 或者 differenc) 即set1特有的元素 2 set1 = {1, 2, 3, 4, 5} 3 set2 = {4, 5, 6, 7, 8} 4 print(set1 - set2) #输出结果:{1, 2, 3} 5 print(set1.difference(set2)) #输出结果:{1, 2, 3}
1 #反交集(^ 或者 symmetric_difference) 2 set1 = {1, 2, 3, 4, 5} 3 set2 = {4, 5, 6, 7, 8} 4 print(set1 ^ set2) #输出结果:{1, 2, 3, 6, 7, 8} 5 print(set1.symmetric_difference(set2)) #输出结果:{1, 2, 3, 6, 7, 8}
1 #子集与超集 2 set1 = {1, 2, 3} 3 set2 = {1, 2, 3, 4, 5, 6} 4 print(set1 < set2) 5 print(set1.issubset(set2)) 6 print(set2 > set1) 7 print(set2.issuperset(set1)) #输出结果:以上输出都为True
1 #frozenset不可变集合,让集合变成不可变类型 2 s = frozenset('barry') 3 print(s, type(s)) #输出结果:frozenset({'b', 'y', 'a', 'r'}) <class 'frozenset'>