Python从放弃到入门——集合set

集合简介

集合也是Python提供的内置数据结构之一。
可以把集合看作是没有存储value的字典,基于此集合的特点如下:
1.集合不可以存储重复的数据
2.集合的数据是无序的
3.集合的数据必须是不可变类型
4.集合可以动态伸缩
5.集合会浪费较大内存

创建

创建集合的方式有两种:
1.花括号{}
注意:{ }代表空字典,不代表空集合
2.调用内置函数set

>>>s={8,7,9,1,4,5}
>>>print(s)
>>>print({8,7,8,9,1,4,5,4})#自动去除重复元素
{1, 4, 5, 7, 8, 9}
{1, 4, 5, 7, 8, 9}

#以下三种方式等价 
>>>print(set([8,7,9,1,4,5]))
>>>print(set((8,7,9,1,4,5)))
>>>print(set({8,7,9,1,4,5}))
{1, 4, 5, 7, 8, 9}

#空集合表示方式
print(set())
set()

注意如果将集合的元素中嵌入可变类型则会报错。

>>>print(set([[8,7],9,1,4,5]))
TypeError: unhashable type: 'list'

查找 增加 删除

用in 检查集合中是否存在指定元素

s={1,3,5,7,9}
print(1 in s)
print(2 in s)
True
False

增加的方法有两种
1.调用方法add一次添加一个元素
2.调用方法update一次添加多个元素

s.add(8)
print(s)
{1, 3, 5, 7, 8, 9}

s={1,3,5,7,9}
s.update((2,4))
print(s)
{1, 2, 3, 4, 5, 7, 9}

删除的方法有四种
1.调用方法remove一次删除一个元素
如果元素不存在则抛出KeyError
2.调用方法discard一次删除一个元素
如果元素不存在不抛出KeyError
3.调用方法pop一次删除一个任意元素
4.调用方法clear清空集合

>>>s={1,3,5,7,9}
>>>s.remove(5)
>>>print(s)
{1, 3, 7, 9}
>>>s.remove(8)
KeyError: 8

>>>s={1,3,5,7,9}
>>>s.discard(5)
>>>print(s)
>>>s.discard(8)
>>>print(s)
{1, 3, 7, 9}
{1, 3, 7, 9}

>>>s={1,3,5,7,9}
>>>print(s.pop())
>>>print(s)
1
{3, 5, 7, 9}

>>>s={1,3,5,7,9}
>>>s.clear()
>>>print(s)
set()

集合关系

1.集合相等
用运算符==可以判断集合是否相等。
2.子集
用方法issubset可以判断一个集合是否是另一个集合的子集。
3.超集
用方法issuperset可以判断一个集合是否是另一个集合的子集。
4.无交集
用方法isdisjoint可以判断两个集合是否没有交集。

>>>s1={1,3,5,7,9}
>>>s2={9,7,5,3,1}
>>>print(s1==s2)
True

>>>s1={1,3,5,7,9}
>>>s2={1,3,5,6,7,9}
>>>print(s1.issubset(s2))
>>>print(s2.issuperset(s1))
True
True

>>>s1={1,3,5,7,9}
>>>s2={2,4,6,8,10}
>>>print(s1.isdisjoint(s2))
True

数学运算

同数学上集合的运算一样,集合也能进行交集并集等运算。其中,数学运算符都存在等价的方法。

1.交集 & intersection
在这里插入图片描述
2.并集 | union
在这里插入图片描述
3.差集 - difference
在这里插入图片描述
4.对称差集 ^ symmetric_difference
在这里插入图片描述

>>>s1={1,3,5,7,9}
>>>s2={2,3,6,7,10}
>>>print(s1&s2)
>>>print(s1.intersection(s2))
{3, 7}
{3, 7}

print(s1|s2)
print(s1.union(s2))
{1, 2, 3, 5, 6, 7, 9, 10}
{1, 2, 3, 5, 6, 7, 9, 10}

print(s1-s2)
print(s1.difference(s2))
{1, 5, 9}
{1, 5, 9}

print(s1^s2)
print(s.symmetric_difference(s2))
{1, 2, 5, 6, 9, 10}
{1, 2, 5, 6, 9, 10}

不可变集合

frozenset至于set就好比tuple之于list
可以调用内置函数frozenset创建frozenset对象

>>>s=frozenset([1,3,5,7,9])
>>>print(s)
frozenset({1, 3, 5, 7, 9})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值