首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python 集合

  • 23-11-14 09:22
  • 3415
  • 5072
blog.csdn.net

Python 集合

文章目录

  • 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 
  • 1
  • 2

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

Example: Set of Distinct Elements

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

集合中元素的顺序不一定与赋值时给出的顺序相同。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 "", line 1, in 
    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 "", line 1, in 
    myset = { {10, 10}, 10, 20}
TypeError: unhashable type: 'set' 
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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

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

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

Example: Creating an Empty Set

>>> emp = {} # creates an empty dictionary
>>> type(emp)
'''

'''
>>> s = set() # creates an empty set
>>> type(s)
'''
 
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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} 
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

修改集合元素

使用内置的集合功能 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} 
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

设置操作

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

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

符: | 法: 集.联() |

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

| |

>>> 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}
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

符: & 法: 集.交() |

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

| |

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

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

符 : - 法: 集.差() |

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

| |

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

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

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

>>> 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}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

| |

>>> 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}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

|

设置方法

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

方法描述
set.add()向集合中添加元素。如果集合中已经存在某个元素,则它不会添加该元素。
set.clear()从集合中移除所有元素。
set.copy()返回集合的浅拷贝。
set.difference()返回具有唯一元素的新集,这些元素不在作为参数传递的另一个集中。
set.difference_update()用作为参数传递的另一个集合中的公共元素更新调用方法的集合。
set.discard()从集合中移除特定元素。
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 中添加不同的元素来更新集合。

《AUTOSAR谱系分解(ETAS工具链)》之总目录

注:本文转载自blog.csdn.net的PlutoZuo的文章"https://blog.csdn.net/PlutoZuo/article/details/133042053"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top