Python 集合

集合是不同的可散列对象的可变集合,与列表和元组相同。 它是一个无序的对象集合,这意味着它不记录元素位置或插入顺序,因此不能使用索引访问元素。

该集合是数学中集合的 Python 实现。集合对象有合适的方法来执行数学集合运算,如并集、交集、差集等。

set 对象包含一个或多个不一定是同一类型的项,这些项由逗号分隔并包含在花括号{}中。下面定义了一个偶数集合对象。

Example: Python Set Object

even_nums = {2, 4, 6, 8, 10} # set of even numbers
emp = {1, 'Steve', 10.5, True} # set of different objects 

集合不存储重复的对象。即使在花括号内多次添加对象,set 对象中也只保留一个副本。因此,索引和切片操作不能在集合对象上完成。

Example: Set of Distinct Elements

>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5} 

集合中元素的顺序不一定与赋值时给出的顺序相同。Python 优化了集合的结构,以便对其执行数学定义的操作。

只有不可变(和 hashable)对象可以是 set 对象的一部分。可以接受数字(整数、浮点数以及复数)、字符串和元组对象,但不接受集合、列表和字典对象。

Example: Set Elements

>>> myset = {(10,10), 10, 20} # valid
>>> myset
{10, 20, (10, 10)}
>>> myset = {[10, 10], 10, 20}  # can't add a list
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    myset = {[10, 10], 10, 20}
TypeError: unhashable type: 'list'
>>> myset = { {10, 10}, 10, 20} # can't add a set
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    myset = { {10, 10}, 10, 20}
TypeError: unhashable type: 'set' 

在上面的例子中,(10,10)是一个元组,因此它成为集合的一部分。但是,[10,10]是一个列表,因此会显示一条错误消息,表示该列表不可删除。 ( 哈希是计算机科学中的一种机制,能够更快地搜索计算机内存中的对象。)

即使可变对象不存储在集合中,集合本身也是可变对象。

使用 set()功能创建一个空集合。空的花括号将创建一个空的字典,而不是一个空的集合。

Example: Creating an Empty Set

>>> emp = {} # creates an empty dictionary
>>> type(emp)
<class 'dict'>
>>> s = set() # creates an empty set
>>> type(s)
<class 'set'> 

set()函数也用于将字符串、元组或字典对象转换为 set 对象,如下所示。

Example: Convert Sequence to Set

>>> s = set('Hello') # converts string to set
>>> s
{'l', 'H', 'o', 'e'}
>>> s = set((1,2,3,4,5)) # converts tuple to set
>>> s
{1, 2, 3, 4, 5}
>>> d = {1:'One', 2: 'Two'} 
>>> s = set(d) # converts dict to set
>>> s
{1, 2} 

使用内置的集合功能 add() 、 remove() 或 update() 方法修改集合集合。

Example:

>>> s = set() # creates an empty set
>>> s.add(10) # add an element
>>> s.add(20)
>>> s.add(30)
>>> s
{10, 20, 30}
>>> primeNums = {2, 3, 5, 7}
>>> s.update(primeNums) # update set with another set
>>> s
{2, 3, 20, 5, 7, 10, 30}
>>> s.remove(2) # remove an element
>>> s
{3, 20, 5, 7, 10, 30} 

如前所述,Python 中的集合数据类型实现为数学中定义的集合。可以执行各种设置操作。运算符|、&、-和^分别执行并集、交集、差集和对称差集运算。这些运算符中的每一个都有一个与内置集合类相关联的相应方法。

操作 例子
联合:返回一个包含两个集合元素的新集合。

符: |
法: 集.联() |

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1|s2         
{1, 2, 3, 4, 5, 6, 7, 8}

|
|

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1.union(s2)  
{1, 2, 3, 4, 5, 6, 7, 8}   
>>> s2.union(s1)  
{1, 2, 3, 4, 5, 6, 7, 8}

|
| 交集:返回包含两个集合共有元素的新集合。

符: &
法: 集.交() |

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1&s2         
{4, 5}                     
>>> s2&s1         
{4, 5}

|
|

>>> s1={1,2,3,4,5}         
>>> s2={4,5,6,7,8}         
>>> s1.intersection(s2)    
{4, 5}                              
>>> s2.intersection(s1)    
{4, 5}

|
| 差异:返回一个只包含第一个集合中元素的集合,而不包含第二个集合中的元素。

符 : –
法: 集.差() |

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1-s2         
{1, 2, 3}                  
>>> s2-s1         
{8, 6, 7}

|
|

>>> s1={1,2,3,4,5}    
>>> s2={4,5,6,7,8}    
>>> s1.difference(s2) 
{1, 2, 3}                      
>>> s2.difference(s1) 
{8, 6, 7}

|
| 对称差:返回由两个集合中的元素组成的集合,不包括公共元素。

符: ^
法: 集.对称 _ 差() |

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1^s2         
{1, 2, 3, 6, 7, 8}         
>>> s2^s1         
{1, 2, 3, 6, 7, 8}

|
|

>>> s1={1,2,3,4,5}             
>>> s2={4,5,6,7,8}             
>>> s1.symmetric_difference(s2)
{1, 2, 3, 6, 7, 8}                      
>>> s2.symmetric_difference(s1)
{1, 2, 3, 6, 7, 8}

|

下表列出了内置的集合方法:

方法 描述
set.add() 向集合中添加元素。如果集合中已经存在某个元素,则它不会添加该元素。
set.clear() 从集合中移除所有元素。
set.copy() 返回集合的浅拷贝。
set.difference() 返回具有唯一元素的新集,这些元素不在作为参数传递的另一个集中。
set.difference_update() 用作为参数传递的另一个集合中的公共元素更新调用方法的集合。
设置.丢弃() 从集合中移除特定元素。
set.intersection() 返回一个包含给定集合中常见元素的新集合。
set . interface _ update() 使用指定集合中的公共元素更新调用 instersection_update()方法的集合。
set.isdisjoint() 如果给定的集合没有公共元素,则返回 true。当且仅当集合的交集是空集时,集合是不相交的。
set.issubset() 如果集合(调用 issubset()的集合)包含作为参数传递的另一个集合的每个元素,则返回 true。
set.pop() 从集合中移除并返回随机元素。
set.remove() 从集合中移除指定的元素。如果找不到指定的元素,将引发错误。
set . symmetric _ difference() 返回一个包含两个集合中不同元素的新集合。
set . symmetric difference update() 使用指定集合中的公共元素,更新调用 instersection_update()方法的集合。
set.union() 从所有给定的集合中返回具有不同元素的新集合。
set.update() 通过从传递的一个或多个 iterables 中添加不同的元素来更新集合。

原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/126703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
简单一点简单一点
上一篇 2024-10-03 23:09
下一篇 2024-10-03 23:09

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python编程二级证书考试相关现已可以上网购买

    计算机二级Python考试是一项重要的国家级认证考试,也是Python编程的入门考试。与其他考试一样,Python编程二级证书的考生需要进入正式考试,而为了备考,这篇文章将详细介绍…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29

发表回复

登录后才能评论