1.集合的基本概念及创建
集合是python的一个基本数据类型,集合中的元素是不重复的,无序的,里面的元素必须是可hash的(int,tuple,str,bool)。
set就是dict类型的数据但是不保存value,只保存key。set也用{}表示。
创建一个空集合必须用set(),而不是用{},因为dict是用{}来创建。
s = {'apple','banana','orange','apple'}
print(s)
# 当使用print()函数打印输出时,会自动将集合中重复的元素去除,且每次打印返回的顺序并不和初始的一致。
#{'orange', 'apple', 'banana'}
2.集合的增删改查
集合本身是可变的数据类型,不可哈希,所以有增删改查的操作。
(1)增加元素
add() 方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作
s = {'apple','banana','orange','apple'}
s.add('pear')
print(s)
#{'apple', 'pear', 'orange', 'banana'}
(2)删除元素
s.pop() s.remove() s.clear() 与列表是相同的 ,清空集合以后返回的是空集合 set()。与字典区分 discard()方法用于移除指定的集合元素。该方法不同于 remove() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。 注意:使用完del()如再用print()函数打印时,会报错。NameError: name 'fruit' is not defined.,意为fruit未被定义,说明已删除。
fruit = {'apple','banana','orange','apple'}
del(fruit)
print(fruit)
#NameError: name 's' is not defined
(3)修改元素
集合是无序的,所以没有索引,所以无法直接进行修改
(4)查询元素
集合是一个可迭代对象,因此可以使用for循环
(5)常用操作
交集: 两个集合中共有的元素 print(s1 & s2) set.intersection(set1, set2 ... ) ,set1必需。要在其中检索相同项目的集合。set2可选。其他需要在其中检索相同项目的集合。您可以比较任意多的集合。集合之间由逗号分隔。
并集: union() 方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次。 set.union(set1, set2 ...) set1必需,set2可选 也可以使用 update() 方法将一个集合中的所有项目插入另一个集合中。与列表的更新升级一致
差集: print(s1 - s2) difference() 方法用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中。 difference_update() 方法用于移除两个集合中都存在的元素。 difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。
反交集: print(s1 ^ s2) symmetric_difference() 方法返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。 symmetric_difference_update() 方法移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 symmetric_difference()方法与symmetric_difference_update() 的区别在symmetric_difference()返回一个新集合而symmetric_difference_update() 方法是直接在原集合进行,没有返回值
子集:print(s1 < s2) issubset() 方法用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返False。 issuperset() 方法用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False。
目录