0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python之集合set的基本步骤分享

冬至配饺子 来源:缪斯之子 作者:肖新苗 2022-08-23 10:31 次阅读

1.基本的增删改查, 再加上discard和pop

def test_1():
# 增删改查,discard,
set1 = {1, 2}
set1.add(3)
assert {1, 2, 3} == set1, 'add error'

set1.remove(2)
assert {1, 3} == set1, 'remove error'

set1.update({1, 4})
assert {1, 3, 4} == set1, 'update 1 error'

set1.update((5, ))
assert {1, 3, 4, 5} == set1, 'update 2 error'

e = 5 if 5 in set1 else None
assert e == 5, 'in error'

# 区别就是remove的元素在set当中没有的话会报错,而discard不会
set1.discard(5)
assert {1, 3, 4} == set1, 'discart error'

res = set1.pop()
assert 1== res and {3,4} == set1, 'pop error'

2.difference[差],union[并],intersection[交],symmetric_difference[补]

def test_2():
# - | & ^, difference,union,intersection,symmetric_difference
set1 = {1, 2, 3}
set2 = {2, 3, 4}
setx = set1 - set2
assert {1} == setx, '- error'

setx = set1 | set2
assert {1, 2, 3, 4} == setx, '| error'

setx = set1 & set2
assert {2, 3} == setx, '& error'

setx = set1 ^ set2
assert {1, 4} == setx, '^ error'

setx = set1.difference(set2)
assert {1} == setx, '- error'

setx = set1.union(set2)
assert {1, 2, 3, 4} == setx, '| error'

setx = set1.intersection(set2)
assert {2, 3} == setx, '& error'

setx = set1.symmetric_difference(set2)
assert {1, 4} == setx, '^ error'

pass

3.set的构造方法, in,enumerate

def test_3():
# 方法:set(p), in,enumerate
set1 = set()
assert set() == set1, 'set() error'

set1 = set([1, 2])
assert {1, 2} == set1, '[1,2] error'

set1 = set((1, ))
assert {1} == set1, r'{1} error'

set1 = set('abc')
assert {'a', 'b', 'c'} == set1, 'abc error'

set_indexs = [i for i, v in enumerate(set1)]
assert [0, 1, 2] == set_indexs, 'enumerate error'
pass

4.sorted

def test_4():
# sorted
set1 = {'b', 'a', 'c'}
sorted(set1)
assert {'a', 'b', 'c'} == set1, 'sorted error'
pass

5.浅复制与深复制

import copy

class Person:

def __init__(self, a: int, b: int):
self.a = a
self.b = b

pass


def test_5():
# 浅复制 和 深度复制
set1 = {1, Person(2, 3)}
set2 = {i for i in set1}
set2.update({4})
assert not {4}.issubset(set1), 'copy 1 error'
assert {4}.issubset(set2), 'copy 2 error'

set2 = set1.copy()
for i in set2:
if type(i) == Person:
i.a = 4
p1: Person = [i for i in set1 if type(i) == Person][0]
p2: Person = [i for i in set2 if type(i) == Person][0]

assert 4 == p1.a, 'copy 3 error'
assert 4 == p2.a, 'copy 4 error'

set1 = {1, Person(2, 3)}
set2 = copy.deepcopy(set1)
for i in set2:
if type(i) == Person:
i.a = 4
p3: Person = [i for i in set1 if type(i) == Person][0]
p4: Person = [i for i in set2 if type(i) == Person][0]

assert 2 == p3.a, 'copy 3 error'
assert 4 == p4.a, 'copy 4 error'

pass


6.去重之后保证之前的顺序

def test_6():
'''
set 去重,并且保证之前的顺序
'''
list1 = [1, 2, 7, 2, 5]
list2 = list(set(list1))
assert [1, 2, 5, 7] == list2, 'set sort error'
list2.sort(key=list1.index)
assert [1, 2, 7, 5] == list2, 'set sort 2 error'


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    56

    文章

    4793

    浏览量

    84633
  • ASSERT
    +关注

    关注

    0

    文章

    17

    浏览量

    7239
收藏 人收藏

    评论

    相关推荐

    Java集合API的改进介绍

    简介 本文我们将探讨不同 jdk 版本中各类的起源,以及新引入的类和接口背后的目的。我们将分析之前版本存在的问题,以及为何需要引入新的类或接口。此外,我们还将介绍集合类和接口中的新特性。文章将逐一
    的头像 发表于 11-22 11:12 180次阅读
    Java<b class='flag-5'>集合</b>API的改进介绍

    如何使用Python构建LSTM神经网络模型

    构建一个LSTM(长短期记忆)神经网络模型是一个涉及多个步骤的过程。以下是使用Python和Keras库构建LSTM模型的指南。 1. 安装必要的库 首先,确保你已经安装了Python和以下库
    的头像 发表于 11-13 10:10 333次阅读

    AN-31放大器电路集合

    电子发烧友网站提供《AN-31放大器电路集合.pdf》资料免费下载
    发表于 09-21 10:33 0次下载
    AN-31放大器电路<b class='flag-5'>集合</b>

    pytorch环境搭建详细步骤

    PyTorch作为一个广泛使用的深度学习框架,其环境搭建对于从事机器学习和深度学习研究及开发的人员来说至关重要。以下将介绍PyTorch环境搭建的详细步骤,包括安装Anaconda、配置清华镜像源
    的头像 发表于 08-01 15:38 800次阅读

    pytorch和python的关系是什么

    在当今的人工智能领域,Python已经成为了最受欢迎的编程语言之一。Python的易学易用、丰富的库和框架以及强大的社区支持,使其成为了数据科学、机器学习和深度学习等领域的首选语言。而在深度学习领域
    的头像 发表于 08-01 15:27 1902次阅读

    EtherCAT运动控制器上位机Python+Qt(一):链接与单轴运动

    PC上位机Python+Qt混合编程,助力智能制造高效开发。
    的头像 发表于 07-31 09:43 407次阅读
    EtherCAT运动控制器上位机<b class='flag-5'>之</b><b class='flag-5'>Python</b>+Qt(一):链接与单轴运动

    Python建模算法与应用

    Python作为一种功能强大、免费、开源且面向对象的编程语言,在科学计算、数学建模、数据分析等领域展现出了卓越的性能。其简洁的语法、对动态输入的支持以及解释性语言的本质,使得Python在多个平台
    的头像 发表于 07-24 10:41 528次阅读

    ubuntu下(python ver 2.7.6)运行python demo_server.py后无反应怎么解决?

    你好,以下是mesh demo中关于如何运行meshdemo的描述 Please follow below steps to run mesh_demo: 1. Set up mesh_demo
    发表于 07-22 08:20

    AI训练的基本步骤

    AI(人工智能)训练是一个复杂且系统的过程,它涵盖了从数据收集到模型部署的多个关键步骤。以下是对AI训练过程的详细阐述,包括每个步骤的具体内容,并附有相关代码示例(以Python和scikit-learn库为例)。
    的头像 发表于 07-17 16:57 1998次阅读

    opencv-python和opencv一样吗

    不一样。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。OpenCV-Python
    的头像 发表于 07-16 10:38 1162次阅读

    用pycharm进行python爬虫的步骤

    以下是使用PyCharm进行Python爬虫的步骤: 安装PyCharm和Python 首先,您需要安装PyCharm和Python。PyCharm是一个流行的
    的头像 发表于 07-11 10:11 826次阅读

    编译ESP-AT工程,运行python build.py install命令提示符遇到的疑问求解

    你好,我按照“编译 ESP-AT 工程”步骤操作时候,走到第三步:安装环境,运行python build.py install命令提示符,显示 C
    发表于 06-27 06:05

    idf.py set-target esp32c3无法生效怎么解决?

    :~/workspace/esp32/projects/hello_world$ idf.py set-target esp32c3 Adding \"set-target\"\'s
    发表于 06-06 06:43

    基于Python的地图绘制教程

    本文将介绍通过Python绘制地形图的方法,所需第三方Python相关模块包括 rasterio、geopandas、cartopy 等,可通过 pip 等方式安装。
    的头像 发表于 02-26 09:53 1199次阅读
    基于<b class='flag-5'>Python</b>的地图绘制教程

    如何使用linux下gdb来调试python程序

    如何使用linux下gdb来调试python程序  在Linux下,可以使用GDB(GNU调试器)来调试Python程序。GDB是一个强大的调试工具,可以帮助开发者诊断和修复程序中的错误。在本文
    的头像 发表于 01-31 10:41 2595次阅读