Python08,集合
集合是一个无序不重复元素的序列,这个和数学上的集合概念几乎一样。
可以使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...}
或者
set(value)
例:
set1 = {1,3,4,5,6,7,9}
set2 = set([0,2,4,6,8,12])
集合不能被切片也不能被索引,不过集合的元素可以添加和删除:
a_set = {1,2,3,4,5}
a_set.add(6) #为集合添加一个新元素:6
print(a_set)
#执行结果为:{1, 2, 3, 4, 5, 6}
a_set.discard(5) #删除集合中的元素5
print(a_set)
#执行结果为:{1, 2, 3, 4, 6}
pop()方法和remove()方法也可以删除集合中的元素,不过pop()是删除第一个元素。remove()则是删除指定的元素,如果集合中没有这个指定元素会报错。
a_set.pop()
print(a_set)
a_set.remove(3)
print(a_set)
集合的运算也和数学中的集合运算类似:
print(set1.intersection(set2)) #求两个集合的并集
print(set1.union(set2)) #求两个集合的交集
print(set1.difference(set2)) #求两个集合的补集/差集(set1有但是set2没有)
print(set2.difference(set1)) #求两个集合的补集/差集(set2有但是set1没有)
print(set1.symmetric_difference(set2)) #对称差集(set1+set2后将重复项全部去除)
print(set1.issubset(set2)) #判断set1是否set2的子集
print(set1.issuperset(set2)) #判断set1是否包含set2
补个栗子:
set3 = set1.intersection(set2)
print(set3.issubset(set1))
print(set1.issuperset(set3))
print(set1.isdisjoint(set2)) #判断set1和set2是否有交集,没有返回Ture,有返回False
使用符号表达方式:
print(set1 & set2) #求两个集合的并集
print(set1 | set2) #求两个集合的交集
print(set1 - set2) #求两个集合的补集/差集(set1有但是set2没有)
print(set2 - set1) #求两个集合的补集/差集(set2有但是set1没有)
print(set1 ^ set2) #对称差集(set1+set2后将重复项全部去除)