软件测试升职加薪必看系列:自动化测试Python进阶(五)

ROS2 -Jazzy 一步一步(第一步_工作空间以及编译) 文件夹作用特点是否需要手动创建/维护src存放自己写的 ROS 2 包一个 workspace 可以有多个包需要手动创建build保存编译过程中的中间文件每个包生成对应子目录自动生成,可删除install保存编译完成后的功能包每个包有独立子目录,含可执行文件自动生成,可删除log保存编译日志用于查看错误原因、调试自动生成,不需修改colcon是 ROS 2 推荐使用的构建工具自动处理功能包的依赖和编译顺序一条命令就能编译整个工作空间。 阅读详情

Python进阶5

深入Python的set和dict

dict常用操作

引言

  • clear(): 清空字典
  • copy(): 返回一个浅拷贝
  • fromkeys(): 将可迭代对象中的每一个元素作为key和同一个value拼成字典
  • get(): 根据key返回value,若无对应的键值对,则返回None,也可以指定默认返回值,和索引访问相比,不会产生异常。
  • items():返回一个dict_items类型,支持迭代,键值对以元组形式组织
  • setdefault(): 获取key对应的value值,先调用get(),若不存在该键值对,则添加
  • update(): 合并字典,或键值对元组构成的可迭代对象

使用案例

# 1. clear()
d = {name:"MetaTian", age:"22"}
d.clear()

# 2. copy()
new_dict = d.copy()
new_dict["age"] = 18

print(new_dict)
print(d)

# resutl:
# {'age': 18, 'name': 'MetaTian'}
# {'age': '22', 'name': 'MetaTian'}

# 3. fromkeys()
d = dict.fromkeys(range(3), "MetaTian")
print(d)

# result:
# {0: 'MetaTian', 1: 'MetaTian', 2: 'MetaTian'}

# 4. get()
print(d.get(2))
print(d.get(3))
print(d.get(3, "null"))

# result:
# MetaTian
# None
# null

# 5. items()
print(type(d.items()))
print(d.items())

# result:
# <class 'dict_items'>
# dict_items([(0, 'MetaTian'), (1, 'MetaTian'), (2, 'MetaTian')])

# 6. setdefault()
d = {}
value = d.setdefault("name", "MetaTian")
print(value, d)

# result:
# MetaTian {'name': 'MetaTian'}

# 7. update()
d1 = {1:"a"}
d2 = {2:"b"}

d1.update(d2)
d2.update([(3, "c"), (4, "d")])

print(d1)
print(d2)

# result:
# {1: 'a', 2: 'b'}
# {2: 'b', 3: 'c', 4: 'd'}

set和frozenset

引言

  • set是可变集合,frozenset是不可变集合
  • 集合中的元素无序,不重复

使用案例

"""
通过 set(Iterable) 来构建出可变集合对象
通过 frozenset(Iterable) 构建不可变集合对象
"""
s = set("12345666")
fs = frozenset(['a', 'b', 'c', 'a'])    # 不可变类型,可以作为 dict 的 key
print(s)
print(fs)

# result:
# {'6', '1', '4', '5', '3', '2'}
# frozenset({'b', 'a', 'c'})

"""
向 set 中添加元素
add()
update()
"""
s1, s2 = set("123"), set("234")
s1.update(s2)
s2.add('5')

print(s1)
print(s2)

# result:
# {'1', '2', '3', '4'}
# {'2', '3', '5', '4'}

"""
集合的运算
- 差
& 交
| 并
"""
s1, s2 = set("123"), set("234")
print(s1 - s2)
print(s1 & s2)
print(s1 | s2)

# result:
# {'1'}
# {'2', '3'}
# {'3', '1', '2', '4'}

dict和set的实现原理

引言

  • dict和set的查找性能远远大于list
  • dict和set底层通过散列表存储,因此也要求dict的key是可哈希的,不可变对象都是可哈希的

哈希的原理

  • 以字典为例
  • 存储之前要通过哈希函数来计算key的值,得到存储索引,如果得到的结果已经被使用,要处理冲突,重新计算后再进行存储
  • 自定义的类通过实现__hash__(),就可以存储在dict和set中
  • 因此,具体的存储顺序和元素添加的顺序可能有关

hash table

如果大家对于学习Python有任何问题,学习方法,学习路线,如何学习有效率的问题,可以随时来咨询我,或者缺少系统学习资料的,我做这行年头比较久,自认为还是比较有经验的,可以帮助大家提出建设性建议,这是我的Python交流qun:785128166,有任何问题可以随时来咨询我。
 

YOLO11优化:特征融合 | 金字塔稀疏 Transformer(PST)——一个轻量级、即插即用的模块 | 25年7月最新成果 我们提出金字塔稀疏 Transformer(PST)——一个轻量级、即插即用的模块,通过由粗到细的 token 选择机制和共享注意力参数,在大幅降低计算量的同时保留空间细节。 阅读详情

相关推荐

Python《打砖块》小游戏

Python《打砖块》小游戏!

PanDaoxi 1273

python中set()函数的用法

在写一个程序时,用到了set()函数,就查看了一下set()函数的定义和用法 创建集合set python set类是在python的sets模块中,大家现在使用的python2.3中,不需要导入sets模块可以直接创建集合。 >>>set('boy') set(['y', 'b', 'o']) 集合添加、删除 集合的添加有两种常用方法,分别是add和update。

u010281626的专栏 7万+

orangepi 5 plus ubuntu24.04上安装redroid

OrangePi 5 Plus运行reDroid云手机方案总结 在RK3588+Ubuntu 24.04上部署reDroid(Android容器化方案)的关键步骤: 内核要求:确保启用binderfs(无需ashmem,新版reDroid使用memfd替代); 安装流程: 安装Docker并配置代理加速镜像拉取; 拉取reDroid镜像(推荐Android 12/13 ARM64版本); 通过挂载binderfs启动容器,指定分辨率与DPI参数; 多实例管理: 脚本化创建多个容器(如8个实例),分配独立端口

babytiger的专栏 2290

python set()函数讲解

set   是一个不允许内容重复的组合,而且set里的内容位置是随意的,所以不能用索引列出。可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。 1、创建set集合 &gt;&gt;&gt; set([1,2,3]) {1, 2, 3} &gt;&gt;&gt; set('123') {'1', '2', '3'} &gt;&gt;&gt; set() set() #创建一个空set...

于书盼的博客 2万+

Open5GS实战:从零搭建树莓派5G核心网并与商用终端联调

本文详细介绍了如何在树莓派5上从零开始搭建基于Open5GS的5G核心网,涵盖系统准备、依赖安装、源码编译、关键配置修改及服务启动全流程。通过整合SDR基站与商用终端进行端到端联调,为开发者和研究者提供了一个低成本、可实践的5G网络实验平台,助力物联网与边缘计算应用的本地化测试与验证。

weixin_29194255的博客 159

从涡流求解器到瞬态场:Maxwell 3D里无线充电仿真,选对求解器能省一半计算时间

本文深入探讨了Maxwell 3D在无线充电仿真中涡流求解器与瞬态求解器的选择策略,帮助工程师优化计算效率与精度。通过对比分析两种求解器的适用场景、性能差异及实战技巧,揭示如何根据频率特性、材料非线性和动态过程需求做出精准选择,可节省高达50%的计算时间。特别针对3D线圈模型的无线充电系统设计提供了专业建议。

weixin_26861329的博客 230

PYTHON:集合set的常用方法和基础知识

PYTHON:集合set的常用方法和基础知识,集合的删除、插入,查找、交、并、差、补等运算

m0_51783792的博客 2514

AOA(Angle of Arrival,到达角)定位算法及其误差分析的原理和MATLAB仿真_aoa定位算法

如图所示,有基站 S 1 ( x 1 , y 1 , z 1 ) , S 2 ( x 2 , y 2 , z 2 ) S_1(x_1,y_1,z_1),S_2(x_2,y_2,z_2) S1​(x1​,y1​,z1​),S2​(x2​,y2​,z2​),目标 T ( x , y , z ) T(x,y,z) T(x,y,z)。2+(z_1-z_2)^2} step1:两基站间的距离L=(x1−x2)2+(y1​−y2​)2+(z1​−z2​)2。

2401_87555613的博客 1482

软件测试升职加薪必看系列:自动化测试Python进阶(一)

Python进阶1 Python中一切皆对象 引言 Java语言也是面向对象的语言,但是Python要更加彻底 Python的面向对象特性,是它使用起来灵活的根本所在 对象的特点 可以赋值给一个变量 # 函数也是对象 def test(name): print(name) my_func = test # 注意 只写函数名 和 函数名加括号 的区别 my_func("MetaTian") # 打印:MetaTian 可以添加到集合中去 def plus

测试小小小的博客 261

2、实时DSP编程技术及其应用

本文详细介绍了实时数字信号处理(DSP)技术及其应用,涵盖三种流行的浮点DSP处理器系列的特点、开发工具和优化方法。通过具体的应用实例,如语音压缩、音乐信号处理和雷达信号处理,展示了如何在实际项目中应用这些技术,帮助工程师提高系统的性能和可靠性。

cicd6pipeline的博客 838

OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战

【代码】OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战。

m0_67505153的博客 187

软件测试升职加薪必看系列:自动化测试Python进阶(三)

Python进阶3 深入类和对象 鸭子类型和多态 引言 在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的。 例如,在不使用鸭子类型的语言中,我们可以编写一个函数,它接受一个类型为鸭子的对象,并调用它的走和叫方法。 在使用鸭子类型的语言中,这样的一个函数可以接受一个任意类型的对象,并调用它的走和叫方法。如果这些需要被调用的方法不存在,那么将引发一个运行时错误。任何拥有这样的正确的走和叫方法的对象都可被函数接受的这种行为引出了以上表述,这种决定类型的方式因此得名...

测试小小小的博客 320

动态SLAM中的YOLO与ORB-SLAM3融合:实时目标检测与动态点云滤除实战

本文介绍了如何结合YOLOv5目标检测与ORB-SLAM3视觉SLAM系统,实现动态环境下的目标检测与视觉SLAM任务。文章详细阐述了从源码下载、依赖安装(包括libtorch配置)、编译运行步骤(包括ROS环境和非ROS环境下的编译方法),到RGBD-TUM数据集准备与关联处理的全流程。同时针对常见错误提供了解决方案,如libtorch路径配置、ROS环境冲突等。最后展示了系统运行方法,并探讨了未来可能的优化方向,包括增强目标检测能力和改进动态环境下的地图构建。该集成系统为机器人智能导航和环境感知提供了有

LXY_LOVE36的博客 236

软件测试升职加薪必看系列:自动化测试Python进阶(二)

Python进阶2 魔法函数 引言 魔法函数是Python中定义的,以__开头,__结尾,形如__func__()的函数,一般使用已经存在的魔法函数即可。 使用这样一些函数,可以让我们自定义的类有更加强大的特性。 魔法函数是隐式调用的,不需要我们显示调用。 class Language(object): def __init__(self, language_list): self.lans = language_list # 如果要遍历所有的语言,可以:

测试小小小的博客 332

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

紧急通知,错过这次机会,升职加薪将等到三个月之后

俗话说:"不积跬步无以至千里,不积小流无以成江海”,坚持做正向的事情,慢慢积累,你当下的每一步都是未来的基石和铺垫。在软件测试的职业生涯中也是如此,在工作中坚持做正向积累,你终会到达你想要的那个目标!

YJT1002的博客 884

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

软件测试升职加薪必看系列:自动化测试Python进阶(十)

Python进阶10 多线程 python中的GIL GIL(Global Interpreter Lock),就是一个锁。 Python中的一个线程对应于 C语言 中的一个线程。 GIL使得同一时刻只有一个线程在一个cpu上执行字节码,无法将多个线程分配到多个cpu上进行同步运行。如果在单核cpu上,线程是并发运行,而不是并行。 image 首先,这样效率不高,但是看似也不会产生数据访问冲突的问题,毕竟同一时刻只有一个线程在一个核上运行嘛,然而: sum = 0 def add(

测试小小小的博客 380

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

软件测试升职加薪必看系列:自动化测试Python进阶(六)

Python进阶6 对象引用、垃圾回收、可变性 Python中的变量是什么 引言 Python和java中的变量本质不一样,java的变量可以理解为一个盒子,用来容纳我们的对象,使用前要先声明它,好分配给我们合适的内存空间。Python的变量可以理解为一个标签,先构造出对象,再将变量贴在对象上。 Python变量没有类型,对象才有,本质上是指针。同一个变量,可以表示不同对象。 使用案例 """ a 和 b 都贴在了同一个对象上 """ a = [1, 2] b = a a.append(6

测试小小小的博客 266

软件测试升职加薪必看系列:自动化测试Python进阶(七)

Python进阶7 元类编程 Python属性函数 引言 Python中我们对于自己设置的类,尽量要使其属性私有化,获得更好的封装性。 如果要访问和修改私有属性,要为其设置set和get方法。 Python中,可以使用特殊的装饰器将set和get方法属性化,这样就能够使用更简洁的语法去调用这些方法。 使用案例 class Person: def __init__(self, name, age): self.__name = name self._

测试小小小的博客 334

软件测试升职加薪必看系列:自动化测试Python进阶(四)

Python进阶4 自定义序列类型 序列类型的分类 按照序列存储数据的类型 容器序列:list, tuple, deque 扁平序列:str, bytes, array.array, bytearray 按照序列是否可变 可变序列:list, deque, array.array, bytearray 不可变序列:str, tuple, bytes 序列的abc继承关系 引言 collections.abc模块中有很多内置的抽象基类 序列主要和两个抽象基类有关:Sequence和..

测试小小小的博客 354

软件测试升职加薪必看系列:自动化测试Python进阶(九)

Python进阶9 Python socket编程 引言 sockets的历史悠久,它们最早在 1971 年的 APPANET 中使用,后来成为1983年发布的Berkeley Software Distribution(BSD)操作系统中的API,称为Berkeley sockets。 Web服务器和浏览器并不是使用sockets的唯一程序,各种规模和类型的客户端 - 服务器(client - server)应用程序也得到了广泛使用。 今天,尽管socket API使用的底层协议已经发展多年

测试小小小的博客 280

软件测试升职加薪必看系列:自动化测试Python进阶(八)

Python进阶8 迭代器和生成器 python的迭代协议 引言 迭代器是访问集合内部元素的一种方式,一般用来遍历数据。 迭代器和用下标索引访问的方式不一样,迭代器是不能返回值的 迭代器提供了一种惰性访问数据的方式,需要的时候才产生数据。 可迭代类型都实现了迭代协议,实际上就是__iter__()这个魔法函数。 可迭代类型和迭代器 前面讲过,collections.abc模块中定义了很多内置的抽象基类,现在我们重点关注其中的两个:Iterable和Iterator Iterable..

测试小小小的博客 284

❤️程序人生 | 为什么越来越多的人用Python来做自动化测试?

这段时间网上很流行一句话: 让自己变得更好,才是解决一切问题的关键。 也许你还从来没想过: 如果现在失业,你的存款能够支撑你多久的日常生活,它能应付哪种级别的风险,例如失业、破产、裁员、意外…… 其实生活中有很多“照妖镜”,让你能清楚地看到自己有几分抗风险能力。 可能一场疫情让你处于两难的境地,谁又能保证明天会不会发生些什么。很多时候,你处于岁月静好的生活中,其实暗流涌动,崩塌只在旦夕之间。 而一个真正强大的人,是永远不会停下学习这件事的。因为他知道,落后就意味着被淘汰,这是永恒不变.

2354

学了就能升职加薪?大厂软件测试面试必问的自动化测试框架你真会了吗?

最近我注意到了一个现象,就是每年一到3、4月左右的时候,就会有一大批粉丝朋友来咨询我跳槽、面试这块的问题。

软件自动化测试技术交流、资源分享 101

大厂软件测试面试必问的“自动化测试框架”你真的会了吗?功能测试人备战2022升职加薪最新攻略

做测试这几年来,我注意到了一个现象,就是每年一到12月份左右的时候,就会有一大批粉丝朋友来咨询我跳槽、面试技巧等这方面的问题。

软件自动化测试技术交流、资源分享 193

就因为Python自动化,那个天天摸鱼的同事,他居然升职了!

当代的打工人真的太苦了! 每个月拿着几千块的工资,却为公司拼命,为老板赚钱; 天天996,偶尔007,加班费却不曾有; 工作几年,压力太大,熬没了头发,熬没了健康,升职加薪却排不上队; 想努力搞钱,最后的结果却不是越努力越幸运。 可以说打工人真的惨, 琐碎的工作占据了大量时间,也根本没时间学习提升自己,甚至还会被同龄人远远甩到身后, 不仅搞不到钱,还在工作上被边缘化。 我表姐就是活生生的例子。因为技术迭代还是没有掌握新型技术,面临被辞的风险,而她同时期进来的同事已经升职了,这时候才想起提升自己

1278

不想一直“点点点”,软件测试涨薪必看

软件测试岗位作为互联网行业其中分支之一,是软件公司不可或缺的岗位,但是从事过软件测试行业的朋友就清楚,软件测试涨薪是相对比较难的,下面这篇文章就来告诉大家,软件测试岗位如何提高自己的薪资! 软件测试的入门是比较简单的,但是想要做到中高级,还是有很长的一段路要走,想要加薪,不止要会功能测试,还要会性能测试和自动化测试…【看完有惊喜哦】 作为还在功能测试岗位上徘徊的工程师,怎样才能让自己的薪资翻倍,成为软件测试的全能人才呢? 第一个阶段:软件测试的理论基础和工具【薪资:4k-8k】 熟悉软件的原理、架构 熟悉

qq_40214204的博客 2128
上一篇: 软件测试升职加薪必看系列:自动化测试Python进阶(四)
下一篇: 软件测试升职加薪必看系列:自动化测试Python进阶(六)
测试小小小
博客等级 码龄6年 265粉丝 364原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值