集合
集合用于保存不重复元素。
- 集合和列表非常相似
- 不同点:
1.集合中只能存储不可变对象
2.集合中存储的对象是无序(不是按照元素的插入顺序保存)
3.集合中不能出现重复的元素
集合的所有元素都放在一对”{ }” 中,两个相邻的元素之间用”,”分隔。
集合最好的应用就是去掉重复元素,因为集合中的每一个元素都是唯一的。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合的创建:
1. 直接使用‘{ }’创建集合。创建set集合可以像列表,元组,字典一样。直接将集合给变量从而实现创建集合。
语法格式: setname = {element 1 , element 2,element 3, ... ,element n}
# setname : 表示集合名称。
# element 1 , element 2,element 3, ... ,element n : 表示集合中的元素,没有个数限制,只要是python支持的数据类型都可以。
*注意:1.在创建集合时,如果输入重复的元素,将自动保存最后一个。
2.由于集合时无序的,所以每次输出时的元素顺序可能都不相同。
示例:
python = {'绮梦','冷伊一','香凝','梓轩'} # 保存选择Python语言的学生姓名
print('选择Python语言的学生有:',python) # 输出选择Python语言的学生姓名
c = {'冷伊一','零语','梓轩','圣博'} # 保存选择C语言的学生姓名
print('选择C语言的学生有:',c) # 输出选择C语言的学生姓名
输出:
选择Python语言的学生有: {'香凝', '梓轩', '冷伊一', '绮梦'}
选择C语言的学生有: {'圣博', '梓轩', '冷伊一', '零语'}
2. 又或者:使用set()函数创建集合,将列表,元组等其他可迭代对象转换为集合。
python = set(['绮梦','冷伊一','香凝','梓轩']) # 保存选择Python语言的学生姓名
print('选择Python语言的学生有:',python) # 输出选择Python语言的学生姓名
c = set(['冷伊一','零语','梓轩','圣博']) # 保存选择C语言的学生姓名
print('选择C语言的学生有:',c) # 输出选择C语言的学生姓名
输出:
选择Python语言的学生有: {'绮梦', '梓轩', '冷伊一', '香凝'}
选择C语言的学生有: {'梓轩', '圣博', '冷伊一', '零语'}
集合的添加和删除
1. 向集合添加元素。使用add()方法实现
语法格式:setname.edd(element)
# setname: 表示要添加元素的集合。
# element:表示要添加的元素内容,只能使用字符串,数字,布尔类型的True或者False及元组等不可变对象。不可使用列表,字典等可变对象。
例:
dictionary = set(('一个','两个'))
dictionary.add('包子')
print(dictionary)
输出:
{'两个', '包子', '一个'}
注意:add()方法只能一次添加一个元素。
2. 从集合中删除元素。使用dal()方法实现
可以使用del命令删除整个集合,也可以使用集合的pop()方法或者remove()方法来删除一个元素,或者使用集合对象的clear()方法清空集合,即删除集合中的所有元素,使其变成一个空的集合。
例:
python = set(['绮梦','冷伊一','香凝','梓轩']) # 保存选择Python语言的学生姓名
python.add('零语') # 添加一个元素
print('选择Python语言的学生有:',python,'') # 输出选择Python语言的学生姓名
c = set(['冷伊一','零语','梓轩','圣博']) # 保存选择C语言的学生姓名
c.remove('零语') # 删除指定元素
print('选择C语言的学生有:',c) # 输出选择C语言的学生姓名
输出:
选择Python语言的学生有: {'梓轩', '冷伊一', '零语', '绮梦', '香凝'}
选择C语言的学生有: {'圣博', '冷伊一', '梓轩'}
注意:使用集合remove()方法时,如果指定的内容不存在,将出现异常。所以在删除指定元素前,最好先判断其是否存在。
要判读指定内容是否存在可以使用 in 关键字实现。
如:
s = {'1','2','3','4','5','6'}
i = input('请输入一个数字:')
if i in s:
print(i,'在集合中')
else:
print(i,'不在集合中')
输出
请输入一个数字:9
9 不在集合中
例:
>>>s = {'apple','orange','apple','pear','banana','orange'}
>>>'origin' in s
>>>True
>>>'peach' in s
>>>False
3. 集合的交集,并集和差集运算
交集运算:使用“&”符号。
并集运算:使用“|”符号。
差集运算:使用“-”符号。
对称差集运算:使用“^”符号。
实例:
python = set(['绮梦','冷伊一','香凝','梓轩']) # 保存选择Python语言的学生姓名
c = set(['冷伊一','零语','梓轩','圣博']) # 保存选择C语言的学生姓名
print('选择Python语言的学生有:',python) # 输出选择Python语言的学生姓名
print('选择C语言的学生有:',c) # 输出选择C语言的学生姓名
print('交集运算:',python & c) # 输出既选择了Python语言又选择C语言的学生姓名
print('并集运算:',python | c) # 输出参与选课的全部学生姓名
print('差集运算:',python - c) # 输出选择了Python语言但没有选择C语言的学生名
输出:
选择Python语言的学生有: {'梓轩', '绮梦', '冷伊一', '香凝'}
选择C语言的学生有: {'零语', '梓轩', '圣博', '冷伊一'}
交集运算: {'梓轩', '冷伊一'}
并集运算: {'梓轩', '圣博', '冷伊一', '绮梦', '零语', '香凝'}
差集运算: {'绮梦', '香凝'}
集合内置方法完整列表
add()
为集合添加元素
clear()
移除集合中的所有元素
copy()
拷贝一个集合
difference()
返回多个集合的差集
difference_update()
移除集合中的元素,该元素在指定的集合也存在。
discard()
删除集合中指定的元素
intersection()
返回集合的交集
intersection_update()
返回集合的交集。
isdisjoint()
判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()
判断指定集合是否为该方法参数集合的子集。
issuperset()
判断该方法的参数集合是否为指定集合的子集
pop()
随机移除元素
remove()
移除指定元素
symmetric_difference()
返回两个集合中不重复的元素集合。
symmetric_difference_update()
移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union()
返回两个集合的并集
update()
给集合添加元素