> 文档中心 > Python零基础入门篇 - 16 - Python中的集合

Python零基础入门篇 - 16 - Python中的集合


前言
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 🐶哈士奇🐶 。(我真的养了一只哈士奇)
📑 个人主页:渴望力量的哈士奇主页
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥 如果感觉博主的文章还不错的话,还请不吝👍关注、点赞、收藏三连支持👍一下博主哦
💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬

📕系列专栏::
               👍 Python全栈系列 - [更新中]    ➡️➡️➡️ 【 本文在该系列】
               👋 网安之路系列
​                       🍋 网安之路踩坑篇
​                       🍋 网安知识扫盲篇
​                       🍋 Vulhub 漏洞复现篇
​                       🍋 Shell脚本编程篇
​                       🍋 Web攻防篇  ➡️➡️➡️ 2021年9月3日停止更新,转战先知等安全社区
​                       🍋 渗透工具使用集锦  ➡️➡️➡️ 2021年9月3日停止更新,转战先知等安全社区
​                ⭐️ 点点点工程师系列
​                       🍹 测试神器 - Charles 篇
​                       🍹 测试神器 - Fiddler 篇
​                       🍹 测试神器 - Jmeter 篇
​                       🍹 自动化 - RobotFrameWork 系列
​                       🍹 自动化 - 基于 JAVA 实现的WEB端UI自动化
                       🍹 自动化 - 基于 MonkeyRunner 实现的APP端UI自动化
​                🤗 2019年之前学习Python留下的乱七八糟系列

                                                                                  🎉🎉欢迎持续关注🎉🎉

Python零基础入门篇 - 16 - Python中的集合

文章目录

    • 什么是集合?
      • 定义
      • 集合与列表的区别
      • 特殊集合
      • 常见运算操作
        • 运算符 |
        • 运算符 -
        • 运算符 &
        • 运算符 ^
        • 关键字 in
    • 常见方法
      • add(item) 方法
      • remove(item) 方法
      • clear() 方法
      • union() 方法
      • intersection() 方法
      • issubset() 方法
      • issuperset() 方法
    • 小节

什么是集合?

  • 集合是一个无序、不重复的序列
  • 它的基本用法包括成员检测和消除重复元素
  • 集合对象也支持像 联合,交集,差集,对称差分等数学运算
  • 集合中所有的元素放在 {} 中间,并用逗号分开

定义

集合是一个无序、不重复的序列,集合中所有的元素放在 {} 中间,并用逗号分开,例如:

  • {1, 2, 3},一个包含 3 个整数的列表
  • {‘a’, ‘b’, ‘c’},一个包含 3 个字符串的列表

集合的示例

# 声明cars = {'奥迪', '宝马', '奔驰', '宝马', '奔驰', '五菱'}print(cars)set_ = {1, 1, 3, 1, 2}print(set_)# 输出结果{'orange', 'pear', 'banana', 'apple'}{1, 2}

自动去重了,每个元素只保留一个,且是无序的

再来看一个示例

set_ = {{1, }, {1, }}print(set_)set_ = {[1, ], [2, ]}print(set_)# 输出结果#   set_ = {{1, }, {1, }}#TypeError: unhashable type: 'set'#   set_ = {[1, ], [2, ]}#TypeError: unhashable type: 'list'

为什么报错?

**重点:**因为 set 集合只能包含不可变对象元素,而列表、集合本身都是可变对象,所以会报错

集合与列表的区别

在 Python 中,集合与列表的区别如下:

  • 列表中的元素允许重复,集合中的元素不允许重复,示例如下:
>>> x = {1, 1, 2, 3}>>> x{1, 2, 3}

在以上程序中,元素 1 被重复了 2 次,在创建集合时,重复的元素被合并成一个。

  • 列表是有序的,提供了索引操作,集合是无序的,没有索引操作,示例如下
>>> x = {1, 2, 3}>>> x[0]Traceback (most recent call last):  File "", line 1, in <module>TypeError: 'set' object does not support indexing

在以上程序中,试图使用索引操作符访问集合的第 0 项元素。集合是无序的,不提供索引操作,运行时出错,提示: ‘set’ object does not support indexing。

特殊集合

如何创建一个空集合

set_ = {}print(set_, type(set_))# 输出结果{} <class 'dict'>

不可以直接 { },因为这样默认是一个空字典

创建空集合的正确写法

set_ = set()print(set_, type(set_))# 输出结果# set() 

常见运算操作

运算符 |

合并多个集合

>>> {1, 2} | {3, 4}{1, 2, 3, 4}>>> {1, 2} | {3, 4} | {5, 6}{1, 2, 3, 4, 5, 6}

运算符 -

从集合中删除元素

>>> {1, 2, 3, 4} - {3, 4, 5, 6}{1, 2}

运算符 &

取交集,返回两个集合都包含的元素

>>> {1, 2, 3} & {3, 4, 5}{3}

运算符 ^

取差集

>>> {1, 2, 3} ^ {3, 4, 5}{1, 2, 4, 5}

关键字 in

检查集合中是否包含指定元素

>>> 'jack' in {'lily', 'jack', 'hanmeimei'}True>>> 'neo' in {'lily', 'jack', 'hanmeimei'}False

常见方法

add(item) 方法

add(item) 方法向集合中新增一个元素 item,示例如下:

>>> x = {1, 2, 3}>>> x.add(4)>>> x{1, 2, 3, 4}
  • 在第 2 行,使用 add 方法向集合中新增一个元素 4
  • 在第 4 行,显示列表中已经增加了一个元素

remove(item) 方法

remove(item) 方法从集合中删除指定元素 item,示例如下:

>>> x = {'neo', 'lily', 'hanmeimei'}>>> x.remove('hanmeimei')>>> x{'neo', 'lily'}
  • 在第 2 行,使用 remove 方法从集合中删除一个元素 ‘imooc’
  • 在第 4 行,显示列表中已经删除了一个元素

clear() 方法

clear() 方法移除集合中的所有元素,示例如下:

>>> x = {1, 2, 3}>>> x{1, 2, 3}>>> x.clear()>>> xset()
  • 在第 1 行,创建了一个包含 3 个元素的集合
  • 在第 4 行,使用 clear() 方法移除集合中的所有元素
  • 在第 5 行,显示集合,结果表明所有元素都被删除了

union() 方法

union() 方法返回两个集合的并集,示例如下:

>>> x = {1, 2, 3}>>> y = {4, 5, 6}>>> z = x.union(y)>>> z{1, 2, 3, 4, 5, 6}
  • 在第 3 行,使用 union() 方法返回集合 x 和集合 y 的并集
  • 在第 4 行,显示两个集合的并集

intersection() 方法

intersection() 方法返回两个集合的交集,示例如下:

>>> x = {1, 2, 3}>>> y = {2, 3, 4}>>> z = x.intersection(y)>>> z{2, 3}
  • 在第 3 行,使用 intersection() 方法返回集合 x 和集合 y 的交集
  • 在第 4 行,显示两个集合的交集

issubset() 方法

issubset() 方法判断指定集合是否为子集,示例如下:

>>> x = {1, 2, 3}>>> y = {1, 2}>>> y.isubset(x)True
  • 在第 3 行,使用 issubset() 方法判断集合 y 是否为集合 x 的子集
  • 在第 4 行,结果表明集合 {1, 2} 是集合 {1, 2, 3} 的子集

issuperset() 方法

issuperset() 方法判断指定集合是否为超集,示例如下:

>>> x = {1, 2, 3}>>> y = {1, 2}>>> x.isuperset(y)True
  • 在第 3 行,使用 issuperset() 方法判断集合 x 是否为集合 y 的超集
  • 在第 4 行,结果表明集合 {1, 2, 3} 是集合 {1, 2} 的超集

小节

集合不存在重复元素这一特性能用来干的事情非常多。比如说一个收银系统要把全部的销售信息录入到系统中,为了避免某一收银员的信息重复录入只需要把信息存入集合就可以避免这一错误。

手机爆料