python集合常用方法
- 什么是集合?
集合(set
)是一个无序的元素不重复的序列,通常用来对两个列表进行交并差的处理。
集合支持所有不可变的数据类型的元素(数字、字符串、元组)。集合与列表的区别如下:
功能 | 列表 | 集合 |
---|---|---|
顺序 | 有序 | 无序 |
元素 | 可重复 | 不可重复 |
功能 | 用于数据的使用 | 用于数据的交并差集的获取 |
索引 | 有索引 | 无索引 |
符号 | [],如 [1, 2, 3] | {},如 {1, 2, 3} |
集合只可以通过 set
函数来创建,不能使用 {}
来创建空集合,{}
创建出来的是空字典。
>>> set1 = set()
>>> type(set1)
<class 'set'>
>>> set2 = {}
>>> type(set2)
<class 'dict'>
使用集合需要注意:
集合无法通过索引来获取元素
集合没有任何获取元素的方法
集合只是用来处理列表或元组的一种临时类型,不适合存储或传输
add
函数:
add
函数的功能是在集合中添加一个元素,如果集合中已存在该元素,则该函数不执行。
用法:set.add(item)
,参数 item
表示要添加到集合中的元素,无返回值。示例:
>>> set_1 = set()
>>> set_1.add('xiaobai')
>>> set_1
{'xiaobai'}
update
函数:
update
函数的功能是在集合中加入一个新的集合(或列表、元组、字符串),如果新集合中的元素在原集合中存在则忽略。
用法:set.update(iterable)
,参数 iterable
表示要加入的新的集合(或列表、元组、字符串),无返回值。示例:
>>> set_1
{'xiaobai'}
>>> list_1 = ['xiaobai', '18', 'student']
>>> set_1.update(list_1)
>>> set_1
['xiaobai', 'student', '18'}
remove
函数:
remove
函数的功能是删除集合中的一个元素,如果元素不存在则会报错。
用法:set.remove(item)
,参数 item
表示要删除的元素,无返回值。示例:
>>> set_1
{'xiaobai', 'student', '18'}
>>> set_1.remove('student')
>>> set_1
{'xiaobai', '18'}
>>> set_1.remove('teacher')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'teacher'
clear
函数:
clear
函数的功能是清空当前集合中的所有元素。
用法:set.clear()
,括号内无参数,无返回值。示例:
>>> set_1
{'xiaobai', '18'}
>>> set_1.clear()
>>> set_1
set()
此外,因为集合没有索引,所以 del
函数只能删除集合对象本身,而无法删除集合中的元素。
difference
函数:
difference
函数的功能是返回集合的差集,即返回的集合元素包含在当前集合中,但不包含在需要对比的集合中。
用法:set_1.difference(set_2)
,参数 set_2
表示当前集合需要对比的集合。示例:
>>> set_1 = { 1, 3, 5, 7}
>>> set_2 = {1, 2, 3, 4, 5}
>>> set_1.difference(set_2)
{7}
>>> set_2.difference(set_1)
{2, 4}
intersection
函数:
intersection
函数的功能是返回两个或更多集合的交集,即返回的集合元素必须都存在于当前集合和需要对比的集合中。
用法:set_1.intersection(set_2...)
,参数可以有任意多个,set_2
表示当前集合需要对比的集合。示例:
>>> set_1 = { 1, 3, 5, 7}
>>> set_2 = {1, 2, 3, 4, 5}
>>> set_3 = {3, 7, 5, 6}
>>> set_1.intersection(set_2, set_3)
{3, 5}
>>> set_1.intersection(set_2)
{1, 3, 5}
union
函数:
union
函数的功能是返回两个或更多集合的并集,即返回的集合元素是所有集合中不重复的元素。
用法:set_1.union(set_2...)
,参数可以有任意多个,set_2
表示当前集合需要对比的集合。示例:
>>> set_1 = { 1, 3, 5, 7}
>>> set_2 = {1, 2, 3, 4, 5}
>>> set_3 = {3, 7, 5, 6}
>>> set_1.union(set_2, set_3)
{1, 2, 3, 4, 5, 6, 7}
isdisjoint
函数:
isdisjoint
函数的功能是判断两个集合是否包含相同的元素,如果没有返回 True
,否则返回 False
。
用法:set_1.isdisjoint(set_2)
,参数 set_2
表示当前集合需要对比的集合。示例:
>>> set_1 = { 1, 3, 5, 7}
>>> set_2 = {1, 2, 3, 4, 5}
>>> set_3 = {6, 8}
>>> set_1.isdisjoint(set_2)
False
>>> set_1.isdisjoint(set_3)
True
&
、|
、-
运算符:
&
可以计算两个集合的交集,与 intersection
函数实现的功能一样;|
可以计算两个集合的并集,与 union
函数实现的功能一样;-
可以计算两个集合的差集,与 difference
函数实现的功能一样。
不同之处在于,intersection
、union
、difference
函数的参数可以是集合、列表、字典或字符串。而 &
、|
、-
运算符的左右两边必须是集合。