Python中的魔幻集合:点燃你的编程世界!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

集合在实际开发中常用于去重、查找元素是否存在等场景,提供了一种便捷的数据结构,本文就介绍了集合的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、集合是什么?

在Python中,集合是一种无序且可变的数据类型,它是由一组唯一且不可重复的元素组成。集合使用大括号{}来表示,元素之间用逗号分隔。

二、集合的定义

  • {a, b, c} ==> 花括号,元素用,隔开;但是不能定义空集合
  • set()==> 可以定义空集合,也可以放入可迭代内容

集合中只能存放不可变类型,但集合是可变类型

代码讲解如下:

# 定义
s = {}  # 字典
# {}放入元素用,隔开
# {a, b, c}不能定义空集合
s = {1}
print(type(s))   # <class 'set'>
s = {1, 2, 3}
print(type(s))   # <class 'set'>
# 定义空集合
s1 = set()
print(type(s1))  # <class 'set'>
# set()中可以放入可迭代内容
# 集合中只能存放不可变类型
s3 = set("hello")
print(s3, type(s3))   # {'o', 'h', 'l', 'e'} <class 'set'>
s4 = set([1, 2, 3])
print(s4, type(s4))   # {1, 2, 3} <class 'set'>
s5 = set((1, 2, 3))
print(s5, type(s5))   # {1, 2, 3} <class 'set'>
# 将字典的所有键放入集合,值丢失
# 不建议使用
s6 = set({"name": "小王子", "age": "20"})
print(s6, type(s6))  # {'age', 'name'} <class 'set'>
# 集合中只能存放不可变类型
s0 = {10, 3.14, False, True, "hello", None, (1,)}
print(type(s0))
# 会报错
# s0 = {10, 3.14, False, True, "hello", None, (1, ), [1, 2, 3], {"name": "小王子"}}
# print(type(s0))
# 错误信息:unhashable type: 'list', unhashable type: 'dict'

二、集合的特性

集合有两大特性:无序、不重复

  • 不重复:相同元素只保存一个

  • 无序:没有先后顺序

# 集合的特性:不重复:相同元素只保存一个
# 无序:没有先后顺序
s7 = set((2, 2, 3, 2, 1, 5))
print(s7, type(s7))
# {1, 2, 3, 5} <class 'set'>
s8 = set([2, 2, 3, 2, 1, 5])
print(s8, type(s8))
# {1, 2, 3, 5} <class 'set'>
s9 = set("helloa")
print(s9, type(s9))
# {'h', 'o', 'e', 'a', 'l'} <class 'set'>

三、集合的遍历

请注意:因为集合是无序的,所以无法使用索引遍历,只有一种方法遍历==> for e in s:


s0 = {10, 3.14, False, True, "hello", None, (1,)}
for e in s0:
    print(e)
# 结果
# False
# True
# (1,)
# 3.14
# hello
# 10
# None

四、集合的常用操作方法

  • len:获取集合元素个数

  • in:判断原始是否在集合内部

  • add :将元素添加到集合

  • update({1,}):合并一个新集合到原有集合

  • remove():删除集合中指定元素,不存在则报错

  • discard():删除集合中指定元素,不存在也不报错

  • pop():删除任意一个

  • clear():清空集合

集合核心操作

  • 交集:&;intersection

  • 并集:| ;union

  • 差集:- ;difference

  • 补集:- ;symmetric_difference (全集:所有可能)

  • 超集:issuperset

  • 子集:issubset

s1 = {2, 3, 4}
s2 = {3, 4, 5}
# 交集:你有我也有
s3 = s1 & s2
print(s3)  # {3, 4}
s3 = s1.intersection(s2)
print(s3)  # {3, 4}

# 并集: 你有或者我有
s4 = s1 | s2
print(s4)   # {2, 3, 4, 5}
s4 = s1.union(s2)
print(s4)   # {2, 3, 4, 5}

# 差集: 我有你没有
s5 = s1 - s2
print(s5)  # {2}
s5 = s1.difference(s2)
print(s5)  # {2}

# 补集(全集U)
U = {1, 2, 3, 4, 5}
A = {2, 3, 4}
print(U - A)  # {1, 5}
print(U.symmetric_difference(A))  # {1, 5}

# 超集
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4}
# 可以把s1成为全集
print(s1.issuperset(s2))   # True
print(s2.issubset(s1))   # True

s3 = s1.intersection(s2)
print(s1, s3)  # {1, 2, 3, 4, 5} {3, 4}

s1.intersection_update(s2)
print(s1)   # {3, 4}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了集合的使用,希望通过本人的这篇文章可以让你们对集合有一定的了解。加油ヾ(◍°∇°◍)ノ゙

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值