Python3 集合 | 菜鸟教程


本站和网页 https://www.runoob.com/python3/python3-set.html 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Python3 集合 | 菜鸟教程
菜鸟教程 -- 学的不仅是技术,更是梦想!
首页
HTML
CSS
JavaScript
Vue
Bootstrap
NodeJS
Python3
Python2
Java
C++
C#
Go
SQL
Linux
jQuery
本地书签
首页
HTML
CSS
JS
本地书签
Search
Python3 教程
Python2 教程
Vue3 教程
vue2 教程
Bootstrap3 教程
Bootstrap4 教程
Bootstrap5 教程
Bootstrap2 教程
Python 3 教程
Python3 教程
Python3 简介
Python3 环境搭建
Python3 VScode
Python3 基础语法
Python3 基本数据类型
Python3 数据类型转换
Python3 解释器
Python3 注释
Python3 运算符
Python3 数字(Number)
Python3 字符串
Python3 列表
Python3 元组
Python3 字典
Python3 集合
Python3 条件控制
Python3 循环语句
Python3 编程第一步
Python3 推导式
Python3 迭代器与生成器
Python3 函数
Python3 数据结构
Python3 模块
Python3 输入和输出
Python3 File
Python3 OS
Python3 错误和异常
Python3 面向对象
Python3 命名空间/作用域
Python3 标准库概览
Python3 实例
Python 测验
Python3 高级教程
Python3 正则表达式
Python3 CGI编程
Python3 MySQL(mysql-connector)
Python3 MySQL(PyMySQL)
Python3 网络编程
Python3 SMTP发送邮件
Python3 多线程
Python3 XML 解析
Python3 JSON
Python3 日期和时间
Python3 内置函数
Python3 MongoDB
Python3 urllib
Python uWSGI 安装配置
Python3 pip
Python3 operator
Python math
Python requests
Python random
Python 有用的资源
Python AI 绘画
Python statistics
Python MongoDB 排序
Python3 zip() 函数
Python3 集合
集合(set)是一个无序的不重复元素序列。
集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合。
创建格式:
parame = {value01,value02,...}
或者
set(value)
以下是一个简单实例:
set1 = {1, 2, 3, 4} # 直接使用大括号创建集合
set2 = set([4, 5, 6, 7]) # 使用 set() 函数从列表创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
更多实例演示:
实例(Python 3.0+)
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # 快速判断元素是否在集合内
True
>>> 'crabgrass' in basket
False
>>> # 下面展示两个集合间的运算.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
类似列表推导式,同样集合支持集合推导式(Set comprehension):
实例(Python 3.0+)
>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}
集合的基本操作
1、添加元素
语法格式如下:
s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update( x )
x 可以有多个,用逗号分开。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Runoob'}
>>> thisset.update([1,4],[5,6])
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
>>>
2、移除元素
语法格式如下:
s.remove( x )
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> thisset.remove("Facebook") # 不存在会发生错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
>>>
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
s.discard( x )
实例(Python 3.0+)
>>> thisset = set&#40;&#40;"Google", "Runoob", "Taobao"&#41;&#41;
>>> thisset.discard&#40;"Facebook"&#41; # 不存在不会发生错误
>>> print&#40;thisset&#41;
&#123;'Taobao', 'Google', 'Runoob'&#125;
我们也可以设置随机删除集合中的一个元素,语法格式如下:
s.pop()
脚本模式实例(Python 3.0+)
thisset = set&#40;&#40;"Google", "Runoob", "Taobao", "Facebook"&#41;&#41;
x = thisset.pop&#40;&#41;
print&#40;x&#41;
输出结果:
Runoob
多次执行测试结果都不一样。
set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
3、计算集合元素个数
语法格式如下:
len(s)
计算集合 s 元素个数。
实例(Python 3.0+)
>>> thisset = set&#40;&#40;"Google", "Runoob", "Taobao"&#41;&#41;
>>> len&#40;thisset&#41;
4、清空集合
语法格式如下:
s.clear()
清空集合 s。
实例(Python 3.0+)
>>> thisset = set&#40;&#40;"Google", "Runoob", "Taobao"&#41;&#41;
>>> thisset.clear&#40;&#41;
>>> print&#40;thisset&#41;
set&#40;&#41;
5、判断元素是否在集合中存在
语法格式如下:
x in s
判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
实例(Python 3.0+)
>>> thisset = set&#40;&#40;"Google", "Runoob", "Taobao"&#41;&#41;
>>> "Runoob" in thisset
True
>>> "Facebook" in thisset
False
>>>
集合内置方法完整列表
方法
描述
add()为集合添加元素
clear()移除集合中的所有元素
copy()拷贝一个集合
difference()返回多个集合的差集
difference_update()移除集合中的元素,该元素在指定的集合也存在。
discard()删除集合中指定的元素
intersection()返回集合的交集
intersection_update()
返回集合的交集。
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()判断指定集合是否为该方法参数集合的子集。
issuperset()判断该方法的参数集合是否为指定集合的子集
pop()随机移除元素
remove()移除指定元素
symmetric_difference()返回两个集合中不重复的元素集合。
symmetric_difference_update()
移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union()返回两个集合的并集
update()给集合添加元素
Python MongoDB 排序
Python3 zip() 函数
6 篇笔记
写笔记
#0 Nine dai***0@126.com 470s.update( "字符串" ) 与 s.update( {"字符串"} ) 含义不同:
s.update( {"字符串"} ) 将字符串添加到集合中,有重复的会忽略。
s.update( "字符串" ) 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> print(thisset)
{'Google', 'Runoob', 'Taobao'}
>>> thisset.update({"Facebook"})
>>> print(thisset)
{'Google', 'Runoob', 'Taobao', 'Facebook'}
>>> thisset.update("Yahoo")
>>> print(thisset)
{'h', 'o', 'Facebook', 'Google', 'Y', 'Runoob', 'Taobao', 'a'}
>>>
Nine Nine dai***0@126.com5年前 (2018-06-25)
#0 yijiarenppaa 122***9964@qq.com 200set() 中参数注意事项
1.创建一个含有一个元素的集合
>>> my_set = set(('apple',))
>>> my_set
{'apple'}
2.创建一个含有多个元素的集合
>>> my_set = set(('apple','pear','banana'))
>>> my_set
{'apple', 'banana', 'pear'}
3.如无必要,不要写成如下形式
>>> my_set = set('apple')
>>> my_set
{'l', 'e', 'p', 'a'}
>>> my_set1 = set(('apple'))
>>> my_set1
{'l', 'e', 'p', 'a'}yijiarenppaa yijiarenppaa 122***9964@qq.com5年前 (2018-06-30)
#0 Steven Tse 359***491@qq.com 参考地址 151集合用 set.pop() 方法删除元素的不一样的感想如下:
1、对于 python 中列表 list、tuple 类型中的元素,转换集合是,会去掉重复的元素如下:
>>> list = [1,1,2,3,4,5,3,1,4,6,5]
>>> set(list)
{1, 2, 3, 4, 5, 6}
>>> tuple = (2,3,5,6,3,5,2,5)
>>> set(tuple)
{2, 3, 5, 6}
2、集合对 list 和 tuple 具有排序(升序),举例如下:
>>> set([9,4,5,2,6,7,1,8])
{1, 2, 4, 5, 6, 7, 8, 9}
>>> set([9,4,5,2,6,7,1,8])
{1, 2, 4, 5, 6, 7, 8, 9}
3、集合的 set.pop() 的不同认为
有人认为 set.pop() 是随机删除集合中的一个元素、我在这里说句非也!对于是字典和字符转换的集合是随机删除元素的。当集合是由列表和元组组成时、set.pop() 是从左边删除元素的如下:
列表实例:
set1 = set([9,4,5,2,6,7,1,8])
print(set1)
print(set1.pop())
print(set1)
输出结果:
{1, 2, 4, 5, 6, 7, 8, 9}
{2, 4, 5, 6, 7, 8, 9}
元组实例:
set1 = set((6,3,1,7,2,9,8,0))
print(set1)
print(set1.pop())
print(set1)
输出结果:
{0, 1, 2, 3, 6, 7, 8, 9}
{1, 2, 3, 6, 7, 8, 9}
Steven Tse Steven Tse 359***491@qq.com 参考地址5年前 (2018-08-10)
#0 Sililililidary 282***7697@qq.com 40
>>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
>>> y=set({'python'})
>>> print(y.union(thisset))
{'python', 'Taobao', 'Google', 'Facebook', 'Runoob'}
输出结果:
{'python', 'Google', 'Taobao', 'Facebook', 'Runoob'}
y 的集合里此时只含有一个元素 'python',而如果不加花括号时,y 的集合里含有'p','y','t','h','o','n'五个元素。
>>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
>>> y=set('python')
>>> print(y.union(thisset))
{'p', 'o', 'y', 'Taobao', 'h', 'Google', 'Facebook', 'Runoob', 'n', 't'}
也可以使用括号:
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
y=set(('python','love'))
print(y.union(thisset))
输出结果:
{'Facebook', 'Runoob', 'Taobao', 'python', 'love', 'Google'}
但是当 y 的集合里只有一个字符串时,结果与不加花括号一样。
Sililililidary Sililililidary 282***7697@qq.com4年前 (2019-11-03)
#0 qinjeremy qin***emy@msn.com 36 列表的 sort 方法可以实现就地排序(无需创建新对象,字符串按首字母进行排序):
a=[1, 51, 31, -3, 10]
a.sort()
print(a)
s=['a','ab','3e','z']
s.sort()
print(s)
输出:
[-3, 1, 10, 31, 51]
['3e', 'a', 'ab', 'z']
按集合中的字符长度进行排序:
a=[1, 51, 31, -3, 10]
a.sort()
print(a)
b=['a','ab','3ae','zaaa','1']
b.sort()
print(b)
c=['a','ab','3ae','zaaa','1']
c.sort(key=len)
print(c)
输出:
[-3, 1, 10, 31, 51]
['1', '3ae', 'a', 'ab', 'zaaa']
['a', '1', 'ab', '3ae', 'zaaa']qinjeremy qinjeremy qin***emy@msn.com4年前 (2019-11-13)
#0 vipkwd ser***e@vipkwd.com 70本课一句话通俗话总结函数:
添加元素
setx.add(string|tuple|bool|number):void
setx.update(y [,z...]):void # y、z 为 list|tuple|dict
setx.clear():void
setx.copy():set # 深拷贝(指向新的内存地址)
删除元素
setx.remove(y):void|KeyError #如删除不存在的元素,有报错
setx.discard(y):void
setx.pop():mixed #随机删除集合元素,并返回被删除的元素
右全包含布尔真:判断 setx 集合的所有元素是否都包含在 sety 集合中
setx.issubset(sety):bool
>>> x = {"a", "b", "c"}
>>> y = {"f", "e", "d", "c", "b", "a"}
>>> x.issubset(y)
True
左全包含布尔真: 判断 sety 集合的所有元素是否都包含在原始 setx 的集合中
setx.issuperset(sety):bool
>>> x = {"a", "b", "c"}
>>> y = {"f", "e", "d", "c", "b", "a"}
>>> y.issuperset(x)
True
右半包含布尔取反:判断集合 sety 中是否有集合 setx 的任一元素(包含返回 False,不包含返回 True)
setx.isdisjoint(sety):bool
合并集合(并集):(注意:集合元素的去重、唯一性)
setx.union(sety [, setz...]):set
>>> x = {"a", "b", "c"}
>>> y = {"f", "d", "a"}
>>> z = {"c", "d", "e"}
>>> x.union(y, z)
{'c', 'd', 'f', 'e', 'b', 'a'}
左包含差集: 返回集合的差集,即返回的集合元素包含在第一个集合 x 中,但不包含在第二个集合 y(方法的参数)中
setx.difference(sety):set
左引用删除交集(无返回值,即直接修改原内存指向)
setx.difference_update(sety):void
>>> x,y
({'banana', 'cshit', 'vipkwd.com', 'alipay'}, {'google', 'runoob', 'facebook', 'alipay'})>>> type(x.difference_update(y))
<class 'NoneType'>
>>> x,y
({'banana', 'cshit', 'vipkwd.com'}, {'google', 'runoob', 'facebook', 'alipay'})
左右差集:返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素
setx.symmetric_difference(sety):set
左引用删除交集且引用追加右差集(引用操作,无返回值)
setx.symmetric_difference_update(sett):void
左右交集:返回两个或更多集合中都包含的元素,即交集
setx.intersection(sety[, seyz....]):set
左引用交集
setx.intersection_update(sety):void
辅助理解:所有提到 “引用” 俩字的都是函数内部直接操作内存指向,故无返回值;反之:如果一个函数没有实质返回值,那么它一定是在函数内部改变了其他位置内容, 否则这个函数就是 dog shit,因为它不具有实质的意义。vipkwd vipkwd ser***e@vipkwd.com3年前 (2020-09-05)
点我分享笔记
取消
分享笔记
昵称昵称 (必填)
邮箱邮箱 (必填)
引用地址引用地址
分类导航
HTML / CSSHTML 教程HTML5 教程CSS 教程CSS3 教程Bootstrap3 教程Bootstrap4 教程Bootstrap5 教程Font Awesome 教程Foundation 教程 JavaScriptJavaScript 教程HTML DOM 教程jQuery 教程AngularJS 教程AngularJS2 教程Vue.js 教程Vue3 教程React 教程TypeScript 教程jQuery UI 教程jQuery EasyUI 教程Node.js 教程AJAX 教程JSON 教程Echarts 教程Chart.js 教程Highcharts 教程Google 地图 教程 服务端Python 教程Python2.x 教程Linux 教程Docker 教程Ruby 教程Java 教程C 教程C++ 教程Perl 教程Servlet 教程JSP 教程Lua 教程Rust 教程Scala 教程Go 教程PHP 教程数据结构与算法Django 教程Zookeeper 教程设计模式正则表达式Maven 教程Verilog 教程ASP 教程AppML 教程VBScript 教程 数据库SQL 教程MySQL 教程PostgreSQL 教程SQLite 教程MongoDB 教程Redis 教程Memcached 教程 数据分析Python 教程NumPy 教程Pandas 教程Matplotlib 教程Scipy 教程R 教程Julia 教程 移动端Android 教程Swift 教程jQuery Mobile 教程ionic 教程Kotlin 教程 XML 教程XML 教程DTD 教程XML DOM 教程XSLT 教程XPath 教程XQuery 教程XLink 教程XPointer 教程XML Schema 教程XSL-FO 教程SVG 教程 ASP.NETASP.NET 教程C# 教程Web Pages 教程Razor 教程MVC 教程Web Forms 教程 Web ServiceWeb Service 教程WSDL 教程SOAP 教程RSS 教程RDF 教程 开发工具Eclipse 教程Git 教程Svn 教程Markdown 教程 网站建设HTTP 教程网站建设指南浏览器信息网站主机教程TCP/IP 教程W3C 教程网站品质
Advertisement
反馈/建议
在线实例
&middot;HTML 实例
&middot;CSS 实例
&middot;JavaScript 实例
&middot;Ajax 实例
&middot;jQuery 实例
&middot;XML 实例
&middot;Java 实例
字符集&工具
&middot; HTML 字符集设置
&middot; HTML ASCII 字符集
&middot; JS 混淆/加密
&middot; PNG/JPEG 图片压缩
&middot; HTML 拾色器
&middot; JSON 格式化工具
&middot; 随机数生成器
最新更新
&middot;
正则表达式 &#82...
&middot;
CSS element.cla...
&middot;
正则表达式 &#82...
&middot;
C 语言静态数组...
&middot;
Edge 浏览器
&middot;
JavaScript 模板...
&middot;
Python statisti...
站点信息
&middot;
意见反馈
&middot;
免责声明
&middot;
关于我们
&middot;
文章归档
关注微信
Copyright 2013-2023 菜鸟教程
runoob.com All Rights Reserved. 备案号:闽ICP备15012807号-1
微信关注