集合set:无序的不重复的元素定义。
集合的定义:
list1 = [1,2,5,4,1]
s1 = set(list1)
s2 = {}
print(type(s1),type(s2))
# <class 'set'> <class 'dict'>
print(s1)
# {1, 2, 4, 5}
定义集合只能用set(),如果用{}的话就会定义成字典形式,但是打印集合的时候显示的是{},集合会自动将其中的内容去重,如果有数字,也会将数字排序。
集合的增加:
s1.add(6)
s1.add(3)
print(s1)
# {1, 2, 3, 4, 5, 6}
添加一个元素,并且会自动排序。
list1 = [1,2,5,4,1]
t1 = (7,8,9)
s1 = set(list1)
s1.add(t1)
print(s1)
s1.update(t1)
print(s1)
update可以添加列表元组,把里面的项拆开然后加进来,add只能把元组或列表以添加进来。
删除:
list1 = [1,2,5,4,1]
s1 = set(list1)
s1.remove(2)
print(s1)
# {1, 4, 5}
s1.remove(3)
print(s1)
# KeyError: 3
remove删除集合中的元素,没有返回值,元素不在集合中的话返回KeyError。
list1 = [1,2,5,4,1]
s1 = set(list1)
print(s1)
# {1, 2, 4, 5}
s1.pop()
print(s1)
# {2, 4, 5}
s1.pop()
print(s1)
# {4, 5}
print(s1.pop())
# 4
pop删除时会返回第一个元素,并且删除。
clear清空元素。
list1 = [1,2,5,4,1]
s1 = set(list1)
s1.discard(2)
s1.discard(3)
print(s1)
discard删除元素时,返回值为空,并且如果元素不在集合中也不会报错。
其他符号操作:
集合不支持 + * 运算。
“ in ” 表示把某个元素有没有在集合中。
“ == ”表示判断两个集合的内容是否相等。
“!=”表示判断两个集合内容是否有区别。
并交差集:
set1 = set()
set2 = set()
set1 = {1,2,3,4,5}
set2 = {4,5,7}
set3 = set1 - set2
# 相当于 set3 = set1.difference(set2)
print(set3)
# {1, 2, 3}
“ - ”差集运算,相当于 difference()
set3 = set1 & set2
# 相当于 set3 = set1.intersection(set2)
print(set3)
# {4, 5}
“&” 符号表示求两个集合的交集。
set3 = set1 | set2
# 相当于set3 = set1.union(set2)
print(set3)
# {1, 2, 3, 4, 5, 7}
" | "在集合中表示求两个集合的并。
set3 = set1 ^ set2
# 相当于set3 = set1.symmetric_difference(set2)
print(set3)
# {1, 2, 3, 7}
" ^ " 表示求两个集合的对称差集,并集 - 交集。
set1.difference_update(set2)
print(set1)
# {1, 2, 3}
update 的作用是不用在赋值给新的值,而是把得到的结果付给调用这个函数的变量,可以用在上面写的操作,但是必须用英文的表示形式,而不是符号。