目录
Python集合类型set
Python集合类型set的理解
集合(set)是一个无序的不重复元素序列。
集合是字典dict的特殊情况,即字典每个元素的键与值完全一样。
集合也用大括号{}来表示,只是没有key,value,而只有key。
能做字典key的数据类型才能做set的元素,比如tuple能做key,list不能做key。
创建一个空集合必须使用set()函数,而不是{},因为{}是用来创建一个空字典。
myset={"number","name","score",12, 85.5,(1,2,3)}
print(type(myset))
print(myset)
运行结果
第一次
C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/py001/t09.py
<class 'set'>
{12, (1, 2, 3), 'number', 'score', 85.5, 'name'}
Process finished with exit code 0
第二次(两次运行myset中的元素顺序不一致)
C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/py001/t09.py
<class 'set'>
{'score', 12, (1, 2, 3), 'number', 'name', 85.5}
Process finished with exit code 0
集合set的创建与增删改查
集合set的创建。用大括号{}和逗号",",或用set()函数。创建空集合只能用set()函数。
集合set的添加。使用集合set对象的add()方法。也可以通过set()函数把list或tuple转成set对象。
集合set的删除。可以使用集合set对象的remove()、pop()、clear()、discard()。也可以用del语句删除整体。
集合set的访问(查)。由于集合中的元素是无序的,因此无法向列表那样使用下标访问元素。Python 中,访问集合元素最常用的方法是使用循环结构,将集合中的数据逐一读取出来(就是遍历)。
集合set的修改。很少用。一般直接添加set元素,如果以前添加过,则会被覆盖,如果没有添加过则可以添加进去。set元素永远只出现一次(不重复)。
# 使用大括号创建set对象
myset={"number","name","score",12, 85.5,(1,2,3)}
print(type(myset)) # <class 'set'>
print(myset) # {'number', 12, 'score', (1, 2, 3), 85.5, 'name'}
# 使用set()函数创建set空对象
myset=set()
# 添加set元素
myset.add("number")
myset.add(12)
myset.add(85.5)
print(type(myset)) # <class 'set'>
print(myset) # {12, 85.5, 'number'}
mylist=[1,2,3,4,2,2,2]
print(mylist) # [1, 2, 3, 4, 2, 2, 2]
# 把list转为set
myset=set(mylist)
print(myset) # {1, 2, 3, 4}
# 删除set元素
myset.remove(3)
print(myset) # {1, 2, 4}
集合set的遍历
myset={"number","name","score",12, 85.5,(1,2,3)}
# 遍历set
for imm in myset:
print(imm)
运行结果
C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/py001/t09.py
score
12
number
(1, 2, 3)
name
85.5
Process finished with exit code 0
集合set的运算
集合可以进行集合运算,比如求交集、并集、差集。
list1=[1,2,3,4]
list2=[3,4,5,6,7,8]
set1=set(list1)
print(set1) # {1, 2, 3, 4}
set2=set(list2)
print(set2) # {3, 4, 5, 6, 7, 8}
# 交集
set_inter=set1.intersection(set2)
print(set_inter) # {3, 4}
# 并集
set_union=set1.union(set2)
print(set_union) # {1, 2, 3, 4, 5, 6, 7, 8}
# 差集,在set1中找差集
set_diff1=set1.difference(set2)
print(set_diff1) # {1, 2}
# 差集,在set2中找差集
set_diff2=set2.difference(set1)
print(set_diff2) # {8, 5, 6, 7}
集合set的方法
add():为集合添加元素
clear():移除集合中的所有元素
copy():拷贝一个集合
difference():返回多个集合的差集
difference_update():移除集合中的元素,该元素在指定的集合也存在。
discard():删除集合中指定的元素
intersection():返回集合的交集
intersection_update():返回集合的交集
isdisjoint():判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
issubset():判断指定集合是否为该方法参数集合的子集
issuperset():判断该方法的参数集合是否为指定集合的子集
pop():随机移除元素
remove():移除指定元素
symmetric_difference():返回两个集合中不重复的元素集合
symmetric_difference_update():移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union():返回两个集合的并集
update():给集合添加元素