首页 > 编程语言 >python 集合类型 set

python 集合类型 set

时间:2024-05-09 13:45:57浏览次数:25  
标签:set python print set1 set2 集合 my

set 定义

集合(Set)是一种无序且不重复的数据结构,用于存储一组唯一的元素。时间复杂度O(1)。
集合是由一对花括号 {} 构成,其中每个元素之间用逗号分隔。
集合中的元素必须是不可变的(不可修改),可以包含数字、字符串、元组等不可变类型。
集合中的元素不重复,即集合中每个元素是唯一的。
集合是无序的,不能通过索引访问,因此不能像列表那样使用索引或切片。

set 使用场景

集合是在需要存储唯一元素、进行集合运算、快速查找和去重等场景下非常实用的数据结构。它们具有高效的成员检查和集合操作功能,能够简化代码并提高程序执行效率。
去重:当需要去除列表或其他可迭代对象中的重复元素时,使用集合可以很方便地去除重复项。
集合运算:集合提供了并集、交集、补集等集合运算方法,使得处理集合数据时更加方便。
成员检查:使用集合可以快速检查某个元素是否属于集合,因为集合的成员检查是高效的。
数据筛选:可以使用集合推导式对数据进行筛选和处理,这在处理数据中是非常常见的。
快速查找:当需要快速查找是否包含某个元素时,集合的查找速度比列表快,因为集合使用哈希表来存储元素。

set 初始化

特点:集合中的元素是唯一的,无序的,且不可变(不可哈希)。集合内部元素无索引,因此不能通过索引进行访问或切片。

创建集合:可以使用set()构造函数创建集合,也可以使用花括号{}来定义集合。

重复元素:集合会自动去除重复的元素,确保所有元素都是唯一的。
# 使用 set() 构造函数
my_set = set([1, 2, 3, 2, 3])
print(type(my_set), my_set)  # 输出: <class 'set'> {1, 2, 3}

# 使用花括号 {}
my_set2 = {4, 5, 6, 5}
print(type(my_set2),my_set2)  # 输出: <class 'set'> {4, 5, 6}

my_set3 = set()
print(type(my_set3),my_set3)  # 输出: <class 'set'> set()

my_set4 = {}
print(type(my_set4),my_set4)  # 输出: <class 'dict'> {}

my_set5 = {[1],(1,),1}
print(type(my_set5),my_set5)  # 输出: TypeError: unhashable type: 'list'

set 增加元素

add(elem):增加一个元素到set中。如果元素存在,什么都不做。
update(*others):合并其他元素到set集合中来。参数others必须是可迭代对象。就地修改。
# add()
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)  # 输出: {1, 2, 3, 4}

# 使用 update 方法将 set2 中的元素添加到 set1 中
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.update(set2)
print(set1)  # 输出: {1, 2, 3, 4, 5}

# 使用 update 方法将列表中的元素添加到集合中
set3 = {1, 2, 3}
my_list = [4, 5, 3]
set3.update(my_list)
print(set3)  # 输出: {1, 2, 3, 4, 5}

# 使用 update 方法将多个集合中的元素合并到一个集合中
set5 = {1, 2, 3}
set6 = {3, 4, 5}
set7 = {5, 6, 7}
set5.update(set6, set7)
print(set5)  # 输出: {1, 2, 3, 4, 5, 6, 7}

set 删除元素

使用 remove() 方法可以删除指定的元素,如果元素不存在会引发 KeyError。
使用 discard() 方法也可以删除指定的元素,但如果元素不存在不会产生错误。
使用 pop() 方法会随机删除集合中的一个元素,并返回被删除的元素。
使用 clear() 移除所有元素。
my_set = {1, 2, 3}
my_set.remove(2)
print(my_set)  # 输出: {1, 3}

my_set.discard(3)
print(my_set)  # 输出: {1}

my_set.clear()
print(my_set)  # 输出:set()

set 查询元素

可以通过 in 运算符检查元素是否存在于集合中。
my_set = {1, 2, 3}
print(2 in my_set)  # 输出: True
print(4 in my_set)  # 输出: False

set 集合

set 集合概念

全集(Universal Set):全集是指包含所有可能元素的集合。在Python中,可以使用任何包含所有元素的集合来表示全集。
子集(Subset):如果集合A中的所有元素都在集合B中,那么集合A是集合B的子集。
并集(Union):集合的并集包含了两个集合中所有的独特元素。
交集(Intersection):集合的交集包含同时存在于两个集合中的元素。
差集(Difference):集合的差集包含存在于第一个集合中但不存在于第二个集合中的元素。
超集(Superset):如果集合A包含集合B中所有的元素,那么集合A是集合B的超集。

set 并集

集合的并集包含了两个集合中所有的唯一元素。
可以使用union()方法、|运算符 update()方法,以及|=运算符(原地更新)来计算集合的并集。
并集的结果是一个新的集合,包含两个原始集合中的所有唯一元素。
union() 方法:用于计算两个集合的并集。
| 运算符:也用于计算两个集合的并集。
|= 运算符:用于原地更新集合,将左侧的集合更新为其与右侧集合的并集。
update():和多个集合合并,就地修改。
set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 使用 | 运算符计算并集
union_set_operator = set1 | set2
print(union_set_operator)  # 输出: {1, 2, 3, 4, 5}

# 使用 |= 运算符更新集合为并集
set1 |= set2
print(set1)  # 输出: {1, 2, 3, 4, 5}

# 使用update()方法
set1.update(set2)
print(set1)  # 输出: {1, 2, 3, 4, 5}

set 交集

集合的交集包含了同时存在于两个集合中的元素。
可以使用intersection()方法、&运算符,以及intersection_update()方法和&=运算符进行交集运算。
交集的结果是一个新的集合,包含两个原始集合共同的元素。
intersection() 方法:用于计算两个集合的交集。
& 运算符:也用于计算两个集合的交集。
intersection_update() 方法:用于就地更新集合为交集。
&= 运算符:用于原地更新集合为交集。
set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 使用 & 运算符计算交集
intersection_set_operator = set1 & set2
print(intersection_set_operator)  # 输出: {3}

# 使用 intersection() 方法计算交集
intersection_set_method = set1.intersection(set2)
print(intersection_set_method)  # 输出: {3}

# 使用 &= 运算符更新集合为交集
set1 &= set2
print(set1)  # 输出: {3}

# 使用 intersection_update() 方法更新集合为交集
set1.intersection_update(set2)
print(set1)  # 输出: {3}

set 差集

集合的差集包含属于第一个集合但不属于其他指定集合的元素。
可以使用difference()方法、-运算符,以及difference_update()方法和-=运算符进行差集运算。
差集的结果是一个新的集合,包含第一个集合中存在但其他指定集合中不存在的元素。
difference() 方法:用于计算第一个集合相对于其他集合的差集。
- 运算符:也用于计算两个集合的差集。
difference_update() 方法:用于就地更新集合为差集。
-= 运算符:用于原地更新集合为差集。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5}

# 使用 - 运算符计算差集
difference_set_operator = set1 - set2
print(difference_set_operator)  # 输出: {1, 2}

# 使用 difference() 方法计算差集
difference_set_method = set1.difference(set2)
print(difference_set_method)  # 输出: {1, 2}

# 使用 -= 运算符更新集合为差集
set1 -= set2
print(set1)  # 输出: {1, 2}

# 使用 difference_update() 方法更新集合为差集
set1.difference(set2)
print(set1)  # 输出:{1, 2}

set 对称差集

集合的对称差集包含两个集合中除了交集外的所有唯一元素。
可以使用symmetric_difference()方法、^运算符,以及symmetric_difference_update()方法和^=运算符进行对称差集运算。
对称差集的结果是一个新的集合,包含两个集合中除了交集外的所有唯一元素。
symmetric_difference() 方法:用于计算两个集合的对称差集。
^ 运算符:也用于计算两个集合的对称差集。
symmetric_difference_update() 方法:用于就地更新集合为对称差集。
^= 运算符:用于原地更新集合为对称差集。
set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 使用 ^ 运算符计算对称差集
symmetric_difference_set_operator = set1 ^ set2
print(symmetric_difference_set_operator)  # 输出: {1, 2, 4, 5}

# 使用 symmetric_difference() 方法计算对称差集
symmetric_difference_set_method = set1.symmetric_difference(set2)
print(symmetric_difference_set_method)  # 输出: {1, 2, 4, 5}

# 使用 ^= 运算符更新集合为对称差集
set1 ^= set2
print(set1)  # 输出: {1, 2, 4, 5}

# 使用 symmetric_difference_update() 方法更新集合为对称差集
set1.symmetric_difference(set2)
print(set1)  # 输出: {1, 2, 4, 5}

set 比较

可以使用逻辑运算符(如 == 、!=、< 、>、<=、>=)来比较两个集合是否相等、不相等,或者判断集合的子集关系
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5}

# 相等(==):检查两个集合是否相等
print(set1 == set2)  # 输出: False

# 不相等(!=):检查两个集合是否不相等
print(set1 != set2)  # 输出: True

# 子集(<):检查第一个集合是否是第二个集合的子集
print(set1 < set2)   # 输出: False

# 子集(子集或相等)(<=):检查第一个集合是否是第二个集合的子集。
print(set1 <= set2)  # 输出: False

# 真子集(>):检查第一个集合是否是第二个集合的真子集
print(set1 > set2)   # 输出: False

# 超集(>=):检查第一个集合是否是第二个集合的超集
print(set1 >= set2)  # 输出: False
set1 = {1, 2, 3, 4}
set2 = {2, 3}
set3 = {5, 6}

# 检查 set2 是否是 set1 的子集
print(set2.issubset(set1))  # 输出: True

# 检查 set1 是否是 set2 的超集
print(set1.issuperset(set2))  # 输出: True

# 检查 set3 是否是 set1 的子集
print(set3.issubset(set1))  # 输出: False

# 检查 set1 和 set3 是否不相交
print(set1.isdisjoint(set3))  # 输出: True

参考文档

https://docs.python.org/zh-cn/3.12/library/stdtypes.html#/set-types-set-frozenset

标签:set,python,print,set1,set2,集合,my
From: https://www.cnblogs.com/wangguishe/p/18138247

相关文章

  • 一篇文章掌握Python中多种表达式的使用:算术表达式、字符串表达式、列表推导式、字典推
    Python中的表达式可以包含各种元素,如变量、常量、运算符、函数调用等。以下是Python表达式的一些分类及其详细例子:1.算术表达式算术表达式涉及基本的数学运算,如加、减、乘、除等。#加法表达式sum=3+5#结果为8#乘法表达式product=4*6#结果为24#复......
  • centos7.9 python3安装
    centos7.9python3安装在CentOS7.9上安装Python3,你可以使用yum来安装Python3的包。以下是安装Python3.6的步骤:首先,打开终端。安装Python3.6的依赖包:  sudoyuminstall-ygccopenssl-develbzip2-devellibffi-devel下载Python3.6的源......
  • nicegui:Python 图形界面库,简单好用
    前言在现代计算机应用程序开发中,图形用户界面(GUI)是用户与程序交互的重要组成部分。然而,GUI开发往往需要大量的代码和复杂的布局,给开发者带来了一定的挑战。在本篇博文中,将介绍nicegui,它是一个简单易用的图形用户界面库,提供了一种简化GUI开发的方式,使开发者能够更快速地构建吸......
  • locust:Python 分布式压力测试(带WebUI)
    Locust介绍它采用纯Python实现,是一个分布式用户负载测试的工具。使用基于Requests库的客户端发起请求,使编写脚本大大简化;在模拟并发方面摒弃进程和线程,完全基于时间驱动,采用协程(gevent)提供的非阻塞IO和coroutine来实现网络层的并发请求。因此单台压力机也能产生数千......
  • python适应不同场景的函数 - *args, **kwargs
    在Python中,*args和**kwargs是用来处理函数中不定数量的参数的特殊语法。*args和**kwargs介绍*args*args用于传递不定数量的位置参数,它会将传递给函数的位置参数收集到一个元组中。例如:defmy_func(*args):forarginargs:print(arg)my_func(1,2,3)在这个......
  • python读写json文件
    1.新建json文件打开记事本,重命名为.json后缀使用的样例如下,注意看json文件格式:{"server":{"host":"example.com","port":443,"protocol":"https"},"authentication":{......
  • linux网络-实验集合
    双网卡设置点击查看代码步骤1.虚拟机中增加网络适配器。步骤2.使用ifconfig-a显示所有网卡,查看第二块网卡名称为ens36。步骤3.编辑配置文件。(复制ens33的配置文件并改名为ens36,修改文件。) [root@localhost~]#cd/etc/sysconfig/network-scripts///切换......
  • 解决 node-gyp 错误问题|node与python版本不匹配报错|node-gyp|vue
    项目要用到node-gyp(给爷爬)mac上没问题windows有问题看上面的日志,提到了python2.7看来这个模块用的上古时代的python2.7的技术windows的同学可以先安装python2这里下载:https://www.python.org/ftp/python/2.7/python-2.7.amd64.msi不要修改路径!!不要修改路径!!等......
  • dotnet 9 WPF 支持 Style 的 Setter 填充内容时可忽略 Value 标签
    本文记录WPF在dotnet9的一项XAML编写语法改进点,此改进点用于解决编写Style的Setter进行给Value赋值时,不能将Value当成默认内容,需要多写Value标签的问题。通过此改进点可减少两行XAML代码在原先的WPF版本里面,对Style的Setter填充复杂的对象内容时,大概的......
  • python-利用ffmpeg快速提取视频的音频文件
    """利用ffmpeg快速提取视频的音频文件"""#参考"https://www.cnblogs.com/CodeAndMoe/p/13360011.htmlwindow安装ffmpeg并且设置环境变量https://zhuanlan.zhihu.com/p/118362010"importosdefmain(v_path):#v_path表示视频所在路径生成后的MP3音频文件会在该视频文件目录中......