python中集合_python中集合-set

集合-set

集合是高中数学中的一个概念

一堆确定的无序的唯一的数据,集合中每一个数据成为一个元素

#集合的定义

s =set()print(type(s))print(s)print("*"*30)#此时,大括号内一定要有值,否则定义出的是一个dict

s ={}print(type(s))print(s)print("*"*30)

s= {1,2,3,4,5}print(type(s))print(s)

set()

******************************

{}

******************************

{1, 2, 3, 4, 5}

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

d ={}print(type(d))print(d)

{}

集合的特征

集合内数据无序,即你无法使用索引和分片

集合内部数据,具有唯一性,可以用来排除重复数据

集合内部数据,str, int, float, tuple,冰冻集合等,即内部只能放置可哈希数据

集合序列操作

#成员检测#in not in

s = {4,5,"i", "love", "python"}print(s)if "love" ins:print("爱呀")if "haha" not ins:print("挨个锤子")

{'love', 4, 5, 'python', 'i'}

爱呀

挨个锤子

集合便利操作

#for 循环

s = {4,5,"i", "love", "python"}for i ins:print(i, end=" ")#得到的结果就是随机的

love 4 5 python i

#带有元组的集合遍历

s = {(1,2,3), ("i", "love", "python"), (4,5,6)}for k,m,n ins:print(k, "--", m, "--", n)for k ins:print(k)

i -- love -- python

4 -- 5 -- 6

1 -- 2 -- 3

('i', 'love', 'python')

(4, 5, 6)

(1, 2, 3)

集合的内涵

#普通集合的内涵#以下的集合

s = {1,2,3,5,6,2,3,5,1,2,3,2,2,8,4,6,2}print(s)#普通集合的内涵

ss = {i for i in s if i % 2==0}print(ss)

{1, 2, 3, 4, 5, 6, 8}

{8, 2, 4, 6}

#带有条件的集合内涵

ss = {i for i in s if i % 2==0}print(ss)

{8, 2, 4, 6}

#多重循环的集合内涵

s1 = {1,2,3,4}

s2= {"i","love","python"}

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

{'love', 'lovelovelove', 'iiii', 'pythonpythonpythonpython', 'lovelovelovelove', 'ii', 'iii', 'pythonpython', 'python', 'lovelove', 'pythonpythonpython', 'i'}

集合函数/关于集合的函数

#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

#set:生成一个集合

l = [1,2,3,4,3,23,1,2,3,4]

s=set(l)print(s)

{1, 2, 3, 4, 23}

#add:向集合内添加元素

s = {1}

s.add(2)print(s)

{1, 2}

#clear

s = {1,5,6,8}print(s)print(id(s))

s.clear()print(s)print(id(s))#结果表明clear函数是原地清空数据

{8, 1, 5, 6}

139677107966472

set()

139677107966472

#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

---> 14s.remove(1100)

15 print(s)

16

KeyError: 1100

#pop 随机移除一个元素

s = {1,5,2,3,5,6}

d=s.pop()print(s)print(d)

{2, 3, 5, 6}

1

#集合函数#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

#集合数学操作

s1 = {1,2,3,4,5,6}

s2= {5,6,7,8,9}

s_1= s1 -s2print(s_1)

s_2= s1 +s2print(s_2)

# 此处不支持数学操作中的+操作

{1, 2, 3, 4}

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

in ()

6 print(s_1)

7

----> 8s_2 = s1 + s2

9 print(s_2)

TypeError: unsupported operand type(s) for +: 'set' and 'set'

frozen set:冰冻集合¶

冰冻和就是不可以进行任何修改的集合

frozenset是一种特殊集合

#创建

s =frozenset()print(type(s))print(s)

frozenset()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值