集合简介
集和是python内置数据类型之一,属于可变数据类型。
- 由花括号 {} 把数据项包含起来
- 集和是无序可变的
- 集合的底层是由字典实现的,里面所有的元素都是字典的键对象,因此不能重复且唯一
集合与字典对比照表如下:

集合较于列表和元组,字典性能更优,可以在常数时间复杂度O(1)内完成查找、添加、删除操作。
我们已经把python的数据类型都学了差不多了,整理了一份功能对照表如下:

1. 创建集合
1.1 使用花括号创建
集合的典型格式为花括号创建
Set = {value1,value2,....}
如我们定义一个集合 Set ={“JueJing”,30,(1,2)}

# 定义一个空集合
Set = {}
# 定义集合
Set2 = {"JueJing",30,(1,2)}

1.2 使用set()创建
set()函数,将列表、元组等可迭代对象转换成集合。
- 如果原来数据中存在重复数据,只保留一个
# 定义List
List = ["JueJing",30,30]
Set = set(List)
print(Set)

2. 基本方法
2.1 添加元素
- add()函数
使用add()函数,将新元素添加到集合中。
- 如果新元素已存在,则不进行操作。
>>> Set = {"JueJing",30}
>>> Set.add("Reading")
>>> Set
{'JueJing', 'Reading', 30}

如果添加已经存在的元素,Set的元素不进行任何变化
>>> Set.add("JueJing")
>>> Set
{'JueJing', 'Reading', 30}
>>>

- update()函数
也可以使用update()函数,进行添加新元素
>>> Set = {"JueJing",30}
>>> Set.update(["Reading"])
>>> Set
{'JueJing', 'Reading', 30}
>>>
2.2 移除元素
操作 | 操作 | 例子 | 返回值 |
---|---|---|---|
移除集合 | remove() | s.remove(x) | 无返回值,会抛异常 |
移除集合 | discard() | s.discard(x) | 无返回值 |
随机删除 | pop() | s.pop() | 返回删除对象 |
清空集合 | clear() | s.clear() | 无返回值 |
- remove()函数
remove()函数移除指定的集合元素.
如果元素不存在,则会抛出异常。
>>> Set = {"JueJing",30}
>>> Set.remove(30)
>>> Set
{'JueJing'}
>>> Set.remove("Jue") # "Jue"这个元素不存在集合里
Traceback (most recent call last):
File "", line 1, in
KeyError: 'Jue'
>>>

- discard()函数
discard()函数也是移除指定的元素,但是如果元素不存在,则步会抛出异常。
>>> Set.discard(30)
>>> Set
{'JueJing'}
>>> Set.discard("Jue") # "Jue"元素不存在,系统没有抛出异常
>>>
- pop()函数
pop()函数随机删除集合中的一个元素。
因为,集合的底层是字典,集合也具有无序的特点(没有第一个元素,最后一个元素的概念),使用pop()函数可以一次删除集合的元素。
>>> Set = {"JueJing",30}
>>> Set.pop()
'JueJing'
>>> Set.pop()
30
>>> Set.pop() #当集合为空时,会抛出异常
Traceback (most recent call last):
File "", line 1, in
KeyError: 'pop from an empty set'
>>>
- clear()函数
clear()函数清空整个集合。
>>> Set = {"JueJing",30}
>>> Set.clear()
>>> Set
set()
>>>
2.3 计数
使用len()函数来计算集合元素的个数
>>> Set = {"JueJing",30}
>>> len(Set)
2
>>>
3. 其他操作
3.1 判断元素是否存在
key in set
>>> Set = {"JueJing",30}
>>> "JueJing" in Set
True
>>> "Jue" in Set
False
3.2 运算
集合也可以进行交集、并集及差集运算

>>> Set = {"JueJing",30}
>>> SetN = {3,"Jue","JueJing"}
>>> Set|SetN
{'JueJing', 3, 'Jue', 30}
>>> Set&SetN
{'JueJing'}
>>> Set-SetN
{30}
>>> Set.union(SetN)
{'JueJing', 3, 'Jue', 30}
>>> Set.intersection(SetN)
{'JueJing'}
>>> Set.difference(SetN)
{30}
>>>
总结
Python 集合是非常实用的,它能够高效地从列表等数据结构中删除重复的值,并且执行常见的数学运算,例如:求并集、交集。
人们经常遇到的一个挑战是:何时使用各种数据类型,例如什么时候使用集合或字典。
在不同的工作场景中,学习完成后,我们应该就会更加从容的去选择使用数据类型了,让我们代码更加优美。
好啦,以上是本期内容,下次见~