集合是Python的基本数据类型,在下面这篇文章中,我将简单介绍一下集合的定义和常见的操作。
1. 集合的定义
- 集合是无序的,所以不支持下标索引来查找元素。
- 在python中,集合和字典一样,都使用大括号,而且集合中的每个元素都是唯一的。
- 集合的创建很简单,只需要在大括号中添加元素,并使用逗号隔开即可。
- 集合是一种可变的数据类型。
- 集合的格式:集合名 = {元素1,元素2,元素3...}
如下实例:my_set = {1, 2, 3, 3, 3, 2}实际等价于 my_set = {1, 2, 3}
my_set = {1, 2, 3, 3, 3, 2}
print(my_set)
结果如下:
{1, 2, 3}
定义一个空的集合: my_set = set()
注意: my_set = {} 表示定义一个空字典,而不是集合
my_set = {}
print(type(my_set))
my_set=set()
print(type(my_set))
结果如下:
<class 'dict'>
<class 'set'>
2. 集合的常见操作
2.1 > 向集合中添加元素(add, update):
- add函数是将添加的元素作为一个元素处理
- update是将添加的元素拆分,做为个体传入到集合中
my_set = set()
#add函数是将添加的元素作为一个元素处理
my_set.add("abcd123")
print(my_set)
my_set = set()
#update是将添加的元素拆分,做为个体传入到集合中
my_set.update("abcd123")
print(my_set)
结果如下:
{'abcd123'}
{'b', 'c', '1', '3', 'd', '2', 'a'}
2.2 > 删除集合中的元素(remove,pop,discard):
remove ():删除集合中的具体的值,如果集合中没有这个值,则会报错
my_set={"name","age",12,3.14,True}
#删除集合中的具体的值
my_set.remove(12)
print(my_set)
#如果集合中没有这个值,则会报错
my_set.remove(111)
print(my_set)
结果如下:
{True, 3.14, 'age', 'name'}
Traceback (most recent call last):
File "D:/python_code/St11/test/liebiao.py", line 6, in <module>
my_set.remove(111)
KeyError: 111
pop() : 随机删除集合中的某个元素, 如果集合为空,则程序报错
my_set={"name","age",12,3.14,True,111}
#随机删除集合中的某个元素
my_set.pop()
print(my_set)
my_set1=set()
#如果集合为空,则会报错
my_set1.pop()
print(my_set1)
结果如下:
{3.14, 'name', 12, 111, 'age'}
Traceback (most recent call last):
File "D:/python_code/St11/test/liebiao.py", line 7, in <module>
my_set1.pop()
KeyError: 'pop from an empty set'
discard (): 如果元素存在,直接删除。 如果元素不存在,程序不会报错,不做任何操作
my_set={"name","age",12,3.14,True}
#删除集合中的具体的值
my_set.discard(12)
print(my_set)
my_set={"name","age",12,3.14,True}
#如果集合中没有这个值,则不做任何操作
my_set.discard(111)
print(my_set)
结果如下:
{True, 3.14, 'age', 'name'}
{True, 3.14, 'age', 12, 'name'}
3. 集合的其他操作
- 集合的交集(&)
- 集合的并集(|)
- 集合的差集(-):在"—"前的集合,而不在"—"后的集合
- 集合的对称差集(^):非两者公有的部分
my_set1={"name","age",12,3.14,True,666}
my_set2={"name","age",12,3.14,True,111,222}
#集合的交集
my_set=my_set1&my_set2
print(my_set)
#集合的并集
my_set=my_set1|my_set2
print(my_set)
#集合的差集,在第一个集合中,不在第二个集合中
my_set=my_set1-my_set2
print(my_set)
#集合的差集,在第二个集合中,不在第一个集合中
my_set=my_set2-my_set1
print(my_set)
#集合的对称差集,不是两个集合公有的部分
my_set=my_set1^my_set2
print(my_set)
结果如下:
{True, 'name', 3.14, 12, 'age'}
{True, 'name', 3.14, 12, 111, 666, 'age', 222}
{666}
{222, 111}
{666, 222, 111}