Python 基础数据类型之:集合 set
-
概念:集合是一种容器型数据类型,它要求里面的元素是不可变的数据,但它本身是可变的数据类型。集合是无序的,集合里的元素都是唯一的。
-
格式:{元素,元素,元素},与字典的区别是里面的元素并非键值对。
set1={'amw',1,5,'kvi',True,False,'神力','视图'} print(set1,type(set1)) # 每次打印出来的内容顺序都不同 >>>{False, 1, '神力', 5, '视图', 'amw', 'kvi'} <class 'set'> # 构造空集合方法 set1 = set() print(set1) >>><class 'set'>
-
集合元素的增加:
-
set.add()方法:增加一个元素。
set1={'amw',1,5,'kvi',True,False,'神力','视图'} set1.add(789) print(set1) >>>{False, 1, 5, 'amw', '神力', 'kvi', '视图', 789}
-
set.update()方法:迭代着增加几个元素,相同元素直接去重。
set1={'amw',1,5,'kvi',True,False,'神力','视图'} set1.update('diensnd') # 增加进去2个'd',但最终只有一个。 print(set1) >>>{False, 1, 'i', 'amw', 5, 's', 'd', '神力', '视图', 'kvi', 'n', 'e'}
-
-
集合元素的删除:集合是无序的,所以无法用索引删除
-
set.remove()方法:删除一个指定元素
-
set.pop()方法:随机删除一个元素。
-
set.clear()方法:清空集合。
-
del set:删除整个集合。
-
-
作用(用法):
-
列表的去重:将有重复值的列表转换成集合,直接会去除重复值。
-
但是用这种方法去重列表内容,将会打乱顺序。
list1 = ['amw', 1, 5, 'kvi', True, False, '神力', '视图', '神力', '视图'] print(list1) >>>['amw', 1, 5, 'kvi', True, False, '神力', '视图', '神力', '视图'] set1 = set(list1) print(set1) >>>{False, 1, 5, 'kvi', 'amw', '神力', '视图'}
-
关系测试:交集、并集、差集……
-
交集:(& 或者 intersection)
set1 = {1, 2, 4, 5} set2 = {4, 5, 7, 8} print(set1 & set2) >>>{4, 5} print(set1.intersection(set2)) >>>{4, 5}
-
并集:(| 或者 union)
set1 = {1, 2, 4, 5} set2 = {4, 5, 7, 8} print(set1 | set2) >>>{1, 2, 4, 5, 7, 8} print(set1.union(set2)) >>>{1, 2, 4, 5, 7, 8}
-
差集:(- 或者 difference)
set1 = {1, 2, 4, 5} set2 = {4, 5, 7, 8} print(set1 - set2) >>>{1, 2} print(set2 - set1) >>>{8, 7} print(set1.difference(set2)) >>>{1, 2} print(set2.difference(set1)) >>>{8, 7}
-
反交集:(^ 或者 symmetric_difference)
set1 = {1, 2, 4, 5} set2 = {4, 5, 7, 8} print(set1 ^ set2) >>>{1, 2, 7, 8} print(set1.symmetric_difference(set2)) >>>{1, 2, 7, 8}
-
子集与超集:(>或者issubset,<或者issuperset)
set1 = {4, 5} set2 = {4, 5, 7, 8} print(set1 < set2) print(set1.issubset(set2)) # 以上判断是否为子集 print(set2 > set1) print(set2.issuperset(set1)) # 以上判断是否为超集
-
-
frozenset不可变集合,让集合变成不可变类型:
-