Python之集合
集合:(本文介绍的是无序可变序列集合,不可变另文介绍)
- 同数学中集合概念类似
- 用于保存不重复的元素,元素唯一
- 分为可变集合和不可变集合
- 集合元素放置在”{}“中,不同元素之间用”,“分割。这点上和字典一样。
- 同数学中一样Python中集合也存在创建、添加、删除、交集、并集
集合的创建:
集合的创建有直接利用{}进行创建和通过set()函数将列表、元组等等可迭代对象转换为集合。一般推荐使用第二种方法。
gather={1,2,3,1,1,2,3,4,6,5}
print(gather)
#输出:{1, 2, 3, 4, 5, 6}
如上面代码所示如果创建的时候存在相同的重复的元素则集合只会保存一个。
Python中set集合是无序的,所以每次输出排列的顺序可能不同。例如:
gather={'first','second','third','fourth','fifth','sixth'}
print(gather)
#输出:{'fourth', 'fifth', 'first', 'third', 'sixth', 'second'}
gather={1,2,3,1,1,2,3,4,6,5}
print(gather[1])
后面gather[1]像这种就会报错:TypeError: 'set' object is not subscriptable(意为set集合不可下标索引)
运用set()函数创建集合,用来创建的对象可以是列表、元组、range对象等,也可以是字符串。
list1=['bad','good','study','ok']
tuple=('event','sdf',9)
dictionary={1:6,'gioo':"s",'e':8}
gater=set(list1)
gater1=set(tuple)
gater3=set(dictionary)
gater4=set("学编程掉头发!")
print(gater)
print(tuple)
print(gater3)
print(gater4)
print(len(gater4))
输出:
{'ok', 'bad', 'study', 'good'}
('event', 'sdf', 9)
{'e', 1, 'gioo'}
{'编', '程', '头', '发', '!', '学', '掉'}
7
注意这里元组可以是元组嵌套元组但是不能嵌套列表,否则会出错。字典会输出“键”不会输出“值”。字符串类型的会将不重复的字符拆开进行输出。用此可以判断不重复的字符的个数。
注意创建空的集合的时候不能简单的用{}来创建,否则系统会认为是字典。可以用set来创建空集合。
集合的添加和删除:
集合的添加用add()函数:
gather=set([1,'a','b','c'])
gather.add('d')
print(gather)
输出:{1, 'd', 'c', 'b', 'a'}
集合的删除:
gather={1,'a','b','c'}
gather.pop() #随机的删除一个元素
print(gather) #{1, 'a', 'b'}
gather.remove('a') #删除指定的元素a,如果pop删除了a,则会报错。这里方便演示而已。
print(gather) #{1, 'b'}
gather.clear() #清楚集合内的元素
print(gather) #set()
del gather #删除该集合
为防止remove报错可以先判断一下:
if 'a' in gather:
gather.remove('a')
集合的交集、并集、差集和对称差集运算:
交集运算符“&”:两个集合之间相同的元素
并集运算符“|”:合并两个集合(相同的元素只保留一个)
差集运算符“-”:剔除前面的集合中与后面集合相同的元素
对称差集运算符“^”:合并两个集合中各自独有的元素(可以看作是剔除两个集合中共有的元素再将其合并)
gather=set(['数学',"语文","地理","英语","物理","化学"])
gather1=set(('生物',"地理","语文","政治","美术"))
print("交集:",gather&gather1)
print("并集:",gather|gather1)
print("差集:",gather-gather1)
print("对称差集:",gather^gather1)
# 输出:
# 交集: {'语文', '地理'}
# 并集: {'生物', '政治', '语文', '英语', '物理', '美术', '地理', '化学', '数学'}
# 差集: {'数学', '英语', '物理', '化学'}
# 对称差集: {'生物', '政治', '英语', '美术', '物理', '化学', '数学'}
业余开发者,大神勿喷欢迎交流。微信:如需转载请标明原文链接。