『Python基础-11』集合 (set)
『Python基础-11』集合 (set)
目录:
- 集合的基本知识
- 集合的创建
- 访问集合里的值
- 向集合set增加元素
- 移除集合中的元素
- 集合set的运算
1. 集合的基本知识
- 集合(set)是一个无序不重复元素的序列
- 无序
- 不重复
- 用
{}来界定{}内双元素的是字典-字典是键值对的组合{}内单元素的是集合-集合单元素的组合
- 无法使用位置下标
- 元素不重复,同一集合中,每个元素都是唯一的
- 集合也不能排序,sort()是不能使用的。
- 集合中只能包含不可变类型(即可哈希的数据)
- 可包含: 数字,字符串,元祖
- 不可包含:列表,集合,字典
- 集合的优势
- 由于集合中的元素不能出现多次,这使得集合在很大程度上能够高效地从列表或元组中删除重复值,并执行取并集、交集等常见的的数学操作。
- 集合的主要作用
- 去重,把一个列表变成集合就自动去重了
- 关系测试,测试两组数据之前的交集,差集,并集,子集,父集,对称(反向)差集等关系
2. 集合的创建
- 可以使用
大括号 { }或者set()创建函数创建集合.- 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
- 如果用
set(),括号里只能有一个参数. 例: 可以set1=set([1,2,3,4]);不可以set1=set(1,2,3,4),会报错.
set0 = set() #创建空集合
set1 = set([1,2,3,4,5])
set2 = {1,2,3,4}
print(set0,type(set0))
print(set1,type(set1))
上述代码运行结果:
set() <class 'set'>
{1, 2, 3, 4, 5} <class 'set'>
{1, 2, 3, 4} <class 'set'>
[注意:] 集合是内的元素是不能重复的, 在给集合变量赋值的时候,如有重复的元素,该集合在输出的时候,重复的元素会被自动筛除.不会报错.
set3 = {'红色','红色','黄色','黄色','蓝色','蓝色','黄色'}
运行结果:
{'蓝色', '红色', '黄色'} #重复元素在set中自动被过滤
[注意:] set('字符串')和set({"字符串"})或set(["字符串"])是完全不同的含义:
set1 = set("你好呀!") #会将字符串拆分输出
set2 = set({"你好呀":1})
set3 = set(['你好呀'])
print(set1,type(set1))
print(set2,type(set2))
print(set3,type(set3))
运行结果如下:
{'你', '!', '呀', '好'} <class 'set'>
{'你好呀'} <class 'set'>
{'你好呀'} <class 'set'>
3. 访问集合里的值
- 集合和字典一样是无序的,所以不能通过下标的方式进行访问
- 只能通过成员操作符in 和not in判断某个元素是否在集合里
- 也可以通过for循环吧集合中的元素遍历出来
in, not in
in和not in,两个方法一样,这里以'in'为例:
# 注意对比set 和 set2
set1 = {'apple'}
print(set1,type(set1))
print("a" in set1)
print("apple" in set1)
set2 = set('apple')
print(set2,type(set2))
print("a" in set2)
print("apple" in set2)
上述代码运行结果如下:
{'apple'} <class 'set'>
False
True
{'a', 'e', 'p', 'l'} <class 'set'>
True
False
4. 向集合set增加元素
- 使用
.add()增加单个元素 - 使用
.update增加多个元素
set5 = {1,3,5,7}
print("原始set:",set5)
set5.add('abc')
print("add元素后的set:",set5)
set6 = {1,3,5,7}
print("原始set:")
set6.update('abc') #把插入的元素拆分,做为个体传入到集合中
print("update后的set:",set6)
上述代码运行后的结果:
原始set: {1, 3, 5, 7}
add元素后的set: {1, 3, 5, 7, 'abc'}
原始set: {1, 3, 5, 7}
update后的set: {1, 3, 5, 7, 'b', 'a', 'c'}
[注意:]
只能将不可变的值(例如一个字符串或一个元组)加入到集合中。如果试图将一个列表(list)添加到集合中,系统会返回类型错误「TyprError」。
5. 移除集合中的元素
setA.remove(x):将元素 x 从集合setA中移除,如果元素不存在,则会发生错误。setA.discard(x):将元素x从集合setA中移除,如果集合中没有字符串a也不会报错,自动忽略。setA.pop():随机从集合setA中删除并返回一个元素setA.clear():清空集合setA中所有的元素del setA:彻底删除整个setA
6. 集合set的运算
在Python中, 集合set是基本数据类型中的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种。创建集合set、集合set添加、集合删除、交集、并集、差集的操作都是非常实用的方法。
除此之外, 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.
Python 中常用的集合方法是执行标准的数学运算,例如:求并集、交集、差集以及对称差。
下图显示了一些在集合 A 和集合 B 上进行的标准数学运算。每个韦恩(Venn)图中的红色部分是给定集合运算得到的结果。

这篇文章有详细介绍:
入门 | 一文带你了解Python集合与基本的集合运算_搜狐科技_搜狐网
谢谢阅读!O(∩_∩)O~
『Python基础-11』集合 (set)的更多相关文章
- 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)
# 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...
- 『Python基础-10』字典
# 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...
- 『Python基础-8』列表
『Python基础-8』列表 1. 列表的基本概念 列表让你能够在一个地方存储成组的信息,其中可以只包含几个 元素,也可以包含数百万个元素. 列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...
- 『Python基础-7』for循环 & while循环
『Python基础-7』for循环 & while循环 目录: 循环语句 for循环 while循环 循环的控制语句: break,continue,pass for...else 和 whi ...
- 『Python基础-3』变量、定义变量、变量类型、关键字Python基础-3』变量、定义变量、变量类型、关键字
『Python基础-3』变量.定义变量.变量类型.关键字 目录: 1.Python变量.变量的命名 2.变量的类型(Python数据类型) 3.Python关键字 1. Python 变量.变量的命名 ...
- 『Python基础-1 』 编程语言Python的基础背景知识
#『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...
- 『Python基础-9』元祖 (tuple)
『Python基础-9』元祖 (tuple) 目录: 元祖的基本概念 创建元祖 将列表转化为元组 查询元组 更新元组 删除元组 1. 元祖的基本概念 元祖可以理解为,不可变的列表 元祖使用小括号括起所 ...
- 『Python基础-4』字符串
# 『Python基础-4』字符串 目录 1.什么是字符串 2.修改字符串 2.1 修改字符串大小 2.2 合并(拼接)字符串 2.3 使用乘号'*'来实现字符串的叠加效果. 2.4 在字符串中添加空 ...
- 『Python基础-6』if语句, if-else语句
# 『Python基础-6』if语句, if-else语句 目录: 条件测试 if语句 if-else语句 1. 条件测试 每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为 ...
随机推荐
- Ubuntu安装使用pyltp和StanfordCoreNLP
环境:Ubuntu 16.04+anaconda3 一.pyltp 1. 安装 直接用pip安装: pip install pyltp 然后下载语言模型库,网址:https://pan.baidu.c ...
- 10个出色的NoSQL数据库(转)
随着大数据的不断发展,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.现今的计算机体系结构在数据存储方面要有庞大的水平扩展性,而NoSQL也正是致力于改变这一现状.目前G ...
- PyCharm Django项目开发的调试方法
下面介绍两种PyCharm Django项目开发的调试方法: 方法一: 1. 使用PyCharm 自带的django项目Debug工具, 当然前提条件是django项目环境已经搭建好了. 2. 在代码 ...
- PHP-------抽象和接口
静态的关键字是:static Class ren { Public static $yanse; //yanse是一个静态的成员 Static function show() ; // stat ...
- Sublime Text 3中关闭记住上次打开的文件
使用UltraEdit的时候,每次安装后就得修改一堆配置,其中一项便是关闭“打开上一次未关闭的文件”,Sublime Text 2也有这么一个默认的功能,在实际使用中,这种方式确实可以较快速的访问文件 ...
- FreeMarker之根据模型生成HTML代码
FreeMarker之根据模型生成HTML代码与FreeMarker根据模型生成Java代码,本质上是一样的,关于生成Java代码可以参考我的这篇文章:FreeMarker之根据模板生成Java代码 ...
- 利用arduino给PCB800099液晶驱动板烧录程序
某宝上购买了一块PCB800099液晶驱动板, 卖家出货的时候刷的驱动不对,遂需要重新烧录程序 可是苦于没有编程器,寻遍网络后找到几种解决方案: arduino刷,树莓派I2C口刷,linux下用vg ...
- 动态截屏软件jpg格式
软件下载地址:https://github.com/weibanggang/jiedu 开始截屏 保存路径 生成图片 预览
- 小修改,让mvc的验证锦上添点花
首先,mvc的客户端验证用的是jquery.validate.js, jquery.validate本身已经提供了很好的扩展功能,通过简单点配置就可以做得更好看些. 而Microsoft通过jquer ...
- STM32平台SD卡的FatFS文件系统开发
STM32平台SD卡的FatFS文件系统开发 系统平台: STM32系列的STM32F103ZE SPI方式与SD卡通信 SD上移植FatFS系统 1 FatFS文件系统 1.1 FatFS简介 Fa ...