python基础_09_集合_set

给大家推荐一个公众号:诗葵1931

里面的诗歌很美

在这里插入图片描述

集合-set

集合是高中数学中的一个概念
一堆确定的无序的唯一的数据,集合中每一个数据成为一个元素
In [25]:

集合的定义

s = set()
print(type(s))
print(s)

此时,大括号内一定要有值,否则定义出的是一个dict

s = {1,2,3,4,5,6,7}
print(s)
<class ‘set’>
set()
{1, 2, 3, 4, 5, 6, 7}
In [24]:

如果只是用大括号定义,则定义的是一个dict类型

d = {}
print(type(d))
print(d)
<class ‘dict’>
{}
集合的特征
集合内数据无序,即无法使用索引和分片
集合内部数据元素具有唯一性,可以用来排除重复数据
集合内的数据,str, int, float, tuple,冰冻集合等,即内部只能放置可哈希数据
集合序列操作
In [29]:

成员检测

in, not in

s = {4,5,“i”, “love”, “wangxiaojing”}
print(s)

if “love” in s:
print(“爱呀”)

if “haha” not in s:
print(“挨个锤子”)
{‘i’, 4, 5, ‘wangxiaojing’, ‘love’}
爱呀
挨个锤子
集合便利操作
In [30]:

for 循环

s = {4,5,“i”, “love”, “wangxiaojing”}

for i in s:
print(i, end=" ")
i 4 5 wangxiaojing love
In [34]:

带有元组的集合遍历

s = {(1,2,3), (“i”, “love”, “wangxiaojing”), (4,5,6)}

for k,m,n in s:
print(k, “–”, m, “–”, n)

for k in s:
print(k)
4 – 5 – 6
i – love – wangxiaojing
1 – 2 – 3
(4, 5, 6)
(‘i’, ‘love’, ‘wangxiaojing’)
(1, 2, 3)
集合的内涵
In [38]:

普通集合内涵

以下集合在初始化后自动过滤掉重复元素

s = {23,223,545,3,1,2,3,4,3,2,3,1,2,4,3}
print(s)

普通集合内涵

ss = {i for i in s}
print(ss)
{545, 1, 3, 2, 4, 23, 223}
{545, 2, 3, 4, 1, 23, 223}
In [40]:

带条件的集合内涵

sss = {i for i in s if i % 2 == 0}
print(sss)
{2, 4}
In [43]:

多循环的集合内涵

s1 = {1,2,3,4}
s2 = {“i”, “love”, “wangxiaojing”}

s = {m*n for m in s2 for n in s1}
print(s)

s = {m*n for m in s2 for n in s1 if n ==2}
print(s)
{‘iii’, ‘i’, ‘lovelovelove’, ‘ii’, ‘lovelovelovelove’, ‘wangxiaojingwangxiaojingwangxiaojingwangxiaojing’, ‘wangxiaojing’, ‘lovelove’, ‘wangxiaojingwangxiaojing’, ‘love’, ‘wangxiaojingwangxiaojingwangxiaojing’, ‘iiii’}
{‘lovelove’, ‘wangxiaojingwangxiaojing’, ‘ii’}
集合函数/关于集合的函数
In [45]:

len, max, min:跟其他基本函数一致

s = {43,23,56,223,4,2,1222,4,323,1}
print(len(s))
print( max(s))
print(min(s))
9
1222
1
In [46]:

set:生成一个集合

l = [1,2,3,4,3,23,1,2,3,4]
s = set(l)
print(s)
{1, 2, 3, 4, 23}
In [48]:

add:向集合内添加元素

s = {1}
s.add(334)
print(s)
{1, 334}
In [50]:
#clear
s = {1,2,3,4,5}
print(id(s))
s.clear()
print(id(s))

结果表明clear函数是原地清空数据

140040159572936
140040159572936
In [52]:

copy:拷贝

remove:移除制定的值,直接改变原有值,如果要删除的值不存在,报错

discard:移除集合中指定的值,跟remvoe一样,但是入股要删除的话,不报错

s = {23,3,4,5,1,2,3}
s.remove(4)
print(s)
s.discard(1)
print(s)

print("*" * 20)
s.discard(1100)
print(s)

s.remove(1100)
print(s)

为啥remove不存在的值会报keyerror

{1, 2, 3, 5, 23}
{2, 3, 5, 23}


{2, 3, 5, 23}

KeyError Traceback (most recent call last)
in ()
12 print(s)
13
—> 14 s.remove(1100)
15 print(s)
16

KeyError: 1100
In [54]:

pop 随机移除一个元素

s = {1,2,3,4,5,6,7}
d = s.pop()
print(d)
print(s)
1
{2, 3, 4, 5, 6, 7}
In [58]:

集合函数

intersection: 交集

difference:差集

union: 并集

issubset: 检查一个集合是否为另一个子集

issuperset: 检查一个集合是否为另一个超集

s1 = {1,2,3,4,5,6}
s2 = {5,6,7,8,9}

s_1 = s1.intersection(s2)
print(s_1)

s_2 = s1.difference(s2)
print(s_2)

s_3 = s1.issubset(s2)
print(s_3)
{5, 6}
{1, 2, 3, 4}
False
In [61]:

集合额数学操作

s1 = {1,2,3,4,5,6}
s2 = {5,6,7,8,9}

s_1 = s1 - s2
print(s_1)

s_2 = s1 + s2
print(s_2)
{1, 2, 3, 4}

TypeError Traceback (most recent call last)
in ()
6 print(s_1)
7
----> 8 s_2 = s1 + s2
9 print(s_2)

TypeError: unsupported operand type(s) for +: ‘set’ and ‘set’
frozen set:冰冻集合
并冻和就是不可以进行任何修改的集合
frozenset是一种特殊集合
In [65]:

创建

s = frozenset()
print(type(s))
print(s)
<class ‘frozenset’>
frozenset()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值