黑猴子的家:python 集合操作

集合是一个无序的,不重复的数据组合,它的主要作用如下
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系

1、创建集合

s = set([3,5,9,10])        #创建一个数值集合  
t = set("Hello")           #创建一个唯一字符的集合

#集合去重,集合是无序的
list_1 = [1,4,5,7,3,6,7,9]
list_1 = set(list_1)
print(list_1)
{1, 3, 4, 5, 6, 7, 9} 

list_2 =set([2,6,0,66,22,8,4])
print(list_2)
{0, 2, 66, 4, 6, 8, 22}

2、交集

>>> list_1.intersection(list_2)
{4, 6}

3、并集

>>> list_1.union(list_2)
{0, 1, 2, 3, 4, 5, 6, 7, 66, 9, 8, 22}

4、差集

#差集 in list_1 but not in list_2
# list1 有 但是 list2 没有
>>> list_1.difference(list_2)
{1, 3, 5, 7, 9}

# list2 有 但是 list1 没有
>>> list_2.difference(list_1)
{0, 2, 66, 8, 22}

5、判断子父集

#子集
>>> list_1
{1, 3, 4, 5, 6, 7, 9} 

>>> list_2
{0, 2, 66, 4, 6, 8, 22}

>>> list_3 = set([1,3,7])

#判断list1 是不是 list2 的 子集
>>> list_1.issubset(list_2)
False

#判断list1 是不是 list2 的 父级
>>> list_1.issuperset(list_2)
False

#判断list3 是不是 list1 的 子集
>>> list_3.issubset(list_1)
True

#判断list1 是不是 list3 的 父级
>>> list_1.issuperset(list_3)
True

6、对称差集

#对称差集
>>> list_1.symmetric_difference(list_2)
{0, 1, 2, 66, 3, 5, 8, 7, 9, 22}

7、判断有无交集

>>> list_3 = set([1,3,7])
>>> list_4 = set([5,6,7,8])
>>> list_5 = set([5,6,8])

#有交集 返回false
>>> list_3.isdisjoint(list_4)
False

#没有交集返回true
>>> list_3.isdisjoint(list_5)
True

8、使用符号表示

#交集
>>> list_1 & list_2
{4, 6}

#union
>>> list_2 | list_1
{0, 1, 2, 66, 4, 3, 6, 5, 8, 7, 9, 22}

#difference
# in list 1 but not in list 2
>>> list_1 - list_2
{1, 3, 5, 7, 9}

#对称差集
>>> list_1 ^ list_2
{0, 1, 2, 66, 3, 5, 8, 7, 9, 22}

9、添加元素

#添加一个
>>> list_1.add(999)
{1, 3, 4, 5, 6, 7, 999, 9}

#添加多个
>>> list_1.update([888,777,555])
{1, 3, 4, 5, 6, 7, 999, 9, 777, 555, 888}

10、删除集合元素

#删除
list_1.remove(888)
{1, 3, 4, 5, 6, 7, 999, 9, 777, 555}

11、打印集合长度

>>> list_1
{1, 3, 4, 5, 6, 7, 999, 9, 777, 555}

#打印set的长度
>>> len(list_1)
10

12、pop 删除

>>> list_1
{1, 3, 4, 5, 6, 7, 999, 9, 777, 555}

#pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
>>> list_1.pop()
1

>>> list_1
{ 3, 4, 5, 6, 7, 999, 9, 777, 555}

13、discard 删除

#discard 删除没有的不会报错,remove 删除没有的 会报错
>>> list_1
{4, 5, 6, 7, 999, 9, 777, 555}

>>> list_1.discard(555)

>>> list_1
{4, 5, 6, 7, 999, 9, 777}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值