玩转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方法

补充

posted @ 2020-02-29 10:24  the3times  阅读(275)  评论(0编辑  收藏  举报