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

    文章

    4831

    浏览量

    87375
  • ASSERT
    +关注

    关注

    0

    文章

    17

    浏览量

    7512
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    linux虚拟环境中调用Linux 版matlab编译的python库时出错

    、readme.txt、 requiredMCRProducts.txt、init.py、CAO_python.ctf。 在linux环境中按照以下步骤安装matlab runtime2018b: ① cd到MCR
    发表于 07-18 10:40

    基础篇3:掌握Python中的条件语句与循环

    Python编程语言中,条件语句和循环是构成复杂逻辑和数据处理的基石。本篇基础教程将帮助您深入了解Python中的条件语句和循环结构,让您能够更好地控制程序流程。 条件语句 条件语句允许程序根据
    发表于 07-03 16:13

    harmony-utilsArrayUtil,集合工具类

    # harmony-utilsArrayUtil,集合工具类 ## harmony-utils 简介与说明 ------[harmony-utils]( https
    的头像 发表于 06-26 17:38 ?135次阅读

    Hi3861 wifiiot_hispark_pegasus 按教程安装python3 -m pip install build/lite 报错

    问题1: 报错: 问题2: 我安装网上搜的方法执行 python3 -m pip install --user ohos-build==0.4.3 hb -v [OHOS INFO] hb
    发表于 06-14 16:48

    零基础入门:如何在树莓派上编写和运行Python程序?

    在这篇文章中,我将为你简要介绍Python程序是什么、Python程序可以用来做什么,以及如何在RaspberryPi上编写和运行一个简单的Python程序。什么是Python程序?
    的头像 发表于 03-25 09:27 ?882次阅读
    零基础入门:如何在树莓派上编写和运行<b class='flag-5'>Python</b>程序?

    DLP4710EVM-LC两个条纹集合投影冲突怎么解决?

    如图所示,我将条纹图写入投影仪用于投影,当只有一个条纹集合时投影正常,因为一个集合最多投影7张图片,而我需要投影22张; 当设置的条纹集合超过一个时,点击连续投影,投影仪投影的图片就会出现一闪而过的情况,并且即使按了暂停也没有
    发表于 02-19 08:36

    Python绘图Matplotlib快速参考手册

    ?PYTHON
    发表于 02-07 14:04 ?0次下载

    使用Python实现xgboost教程

    使用Python实现XGBoost模型通常涉及以下几个步骤:数据准备、模型训练、模型评估和模型预测。以下是一个详细的教程,指导你如何在Python中使用XGBoost。 1. 安装XGBoost
    的头像 发表于 01-19 11:21 ?1414次阅读

    AN42-基准电压源电路集合

    电子发烧友网站提供《AN42-基准电压源电路集合.pdf》资料免费下载
    发表于 01-08 14:33 ?16次下载
    AN42-基准电压源电路<b class='flag-5'>集合</b>

    Java集合API的改进介绍

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

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

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

    使用Python进行图像处理

    下面是一个关于使用Python在几行代码中分析城市轮廓线的快速教程。
    的头像 发表于 11-07 10:14 ?628次阅读
    使用<b class='flag-5'>Python</b>进行图像处理

    电容器安装方式集合和分散区别

    电容器安装方式的集合和分散存在明显的区别,主要体现在安装位置、应用场景、优缺点等方面。 一、安装位置 集合式安装 :多个电容器直接安装在变电站的同一位置上,形成了一个电容器组件。常见的有死角式和中心
    的头像 发表于 09-27 09:52 ?1623次阅读

    AN-31放大器电路集合

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

    EtherCAT运动控制器上位机开发Python+Qt(三):PDO配置与SDO读写

    PC上位机Python+Qt混合编程实现PDO配置与SDO读写
    的头像 发表于 08-21 15:56 ?2148次阅读
    EtherCAT运动控制器上位机开发<b class='flag-5'>之</b><b class='flag-5'>Python</b>+Qt(三):PDO配置与SDO读写