集合{} set()
- 集合是一种无序且元素唯一的容器。你可以认为集合也像字典,但是只有键没有值。
- 集合可以有两种创建方式:set函数或者{}
set([2,2,2,1,3,3])
{1, 2, 3}
{2,2,2,1,3,3}
{1, 2, 3}
集合支持数学上的集合操作,例如联合、交集、差集、对称差集。
a = {1,2,3,4,5}
b = {3,4,5,6,7,8}
- 联合:两个集合中不同元素的并集。union方法或者\二元操作符。
a.union(b)
{1, 2, 3, 4, 5, 6, 7, 8}
a|b
{1, 2, 3, 4, 5, 6, 7, 8}
- 交集:两个集合中同时包含的元素。&操作符或intersection方法。
a.intersection(b)
{3, 4, 5}
a&b
{3, 4, 5}
- 常用的集合方法列表
函数 | 替换方法 | 描述 |
---|---|---|
a.add(x) | N/A | 将元素x加入集合a |
a.clear() | N/A | 将集合重置为空,清除所有元素 |
a.remove(x) | N/A | 从集合a移除某个元素 |
a.pop() | N\A | 移除任意元素,如果集合是空的抛出keyError |
a.union(b) | a|b | a和b中的所有不同元素 |
a.update(b) | a|=b | 将a的内容设置为a和b的并集 |
a.intersection(b) | a&b | a、b中同时包含的元素 |
a.intersection_update(b) | a&=b | 将a的内容设置为a和b的交集 |
a.difference(b) | a-b | 在a不在b的元素 |
a.difference_update(b) | a-=b | 将a的内容设置为在a不在b的元素 |
a.symmetric_difference(b) | a^b | 所有在a或b中,但不同时在a、b中的元素 |
a.symmetric_difference_update(b) | a^=b | 将a的内容设置为所有在a或b中,但不同时在a、b中的元素 |
a.issubset(b) | N/A | 如果a包含b返回True |
深入:对于实战项目而言,用操作的结构代替操作右边的集合内容,代码容错率更高
c = a.copy()
c |= b
c
{1, 2, 3, 4, 5, 6, 7, 8}
d = a.copy()
d &= b
d
{3, 4, 5}
和字典类似,集合的元素必须是不可变的。如果想要包含列表型元素,必须先转换成元组:
my_data = [1,2,3,4]
my_set = {tuple(my_data)}
my_set
{(1, 2, 3, 4)}
一个集合是否是另一个集合的子集(包含于)或超集(包含):
# 子集(包含于)
a_set = {1,2,3,4,5}
{1,2,3}.issubset(a_set)
True
# 超集(包含)
a_set.issuperset({1,2,3})
True
当且仅当两个集合的内容一模一样时,两个集合才相等:
{1,2,3} == {3,2,1}
True
{1,2,3} == {3,1,2}
True
《利用python进行数据分析(原书第二版)》韦斯·麦金尼 解读
《利用python进行数据分析(原书第二版)》韦斯·麦金尼 解读
《利用python进行数据分析(原书第二版)》韦斯·麦金尼 解读