玩转python集合
介绍
集合(set)的基本作用也是存放数据。但是集合的主要作用是:关系运算、去重。
集合是可变的,集合的元素无序不支持索引操作。
定义集合
# 方式一:(推荐)
# user = {"value1", "value2", "value3", ......}
>>> user = {'jack', 'cindy', 'dan', 'sam'}
>>> type(user)
<class 'set'>
# 方式二:(用于类型转换)
# user = set(可迭代数据类型)
>>> user2 = set(user)
>>> user2
{'jack', 'cindy', 'sam', 'dan'}
# 补充:一般使用方式一定义集合;如果定义一个空集合,使用方式二:s = set()
# 注意:集合的每个元素必须是不可变数据类型。
# 定义集合时,相同的元素只会保留一个,即集合的去重作用。
集合基本操作
关系运算
user1 = {'jack', 'cindy', 'alex', 'egon'}
user2 = {'david', 'sandy', 'alex', 'egon'}
# 合集('|'),合并集合并去重
result1 = user1 | user2
# 交集('&'),相交的元素
result2 = user1 & user2
# 差集('-'), 只保留user1独有的元素
result3 = user1 - user2
# 差集 只保留User2独有的元素
result4 = user2 - user1
# 对称差集('^') 去掉交集的部分
result5 = user1 ^ user2
# 是否相同 '=='
is_same = user1 == user2
# 父集('>' or '>=')
is_include = user1 >= user2
# 子集('<' or '<=')
is_in = user1 <= user2
#注意:以上集合运算都会产生一个新集合,原集合不变。
去重
# 定义去重
>>> nums = {1,2,3,4,1,2,3}
>>> nums
{1, 2, 3, 4}
# 帮列表去重
>>> nums = [1,2,3,4,1,2,3,5]
>>> list(set(nums))
[1, 2, 3, 4, 5]
# 注意1: 集合去重不能保证去重后的元素按原先顺序排列(集合去重的缺点1)
# 注意2:集合去重的的容器不能包含可变数据类型的元素,否则会报错
len() 查看集合长度
in not in 判断元素是否在集合中
for循环遍历集合元素
集合的内置方法
常用内置方法
add(element)
>>> user1 = {'jack', 'cindy', 'alex', 'egon'}
>>> user1.add('new_one')
>>> user1
{'cindy', 'alex', 'egon', 'new_one', 'jack'}
# 注意:新增的元素在集合中的位置是随机的
pop()
# 随机删除一个元素并返回,如果集合为空则报错
>>> user1.pop()
'cindy'
remove(element)
# 删除集合指定元素,如果元素不存在则报错
>>> user1 = {'jack', 'cindy', 'alex', 'egon'}
>>> user1.remove('alex')
>>> user1
{'jack', 'cindy', 'egon'}
>>> user1.remove('ben')
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
user1.remove('ben')
KeyError: 'ben'
discard(element)
# 删除指定集合的元素,如果元素不存在, do nothing
>>> user1 = {'jack', 'cindy', 'alex', 'egon'}
>>> user1.discard('alex')
>>> user1
{'jack', 'cindy', 'egon'}
>>> user1.discard('ben')
>>> user1
{'jack', 'cindy', 'egon'}
clear()
# 清空集合所有元素,同列表、字典的clear方法