软件测试/测试开发丨Python常用数据结构学习笔记

Python常用数据结构

list 列表

列表定义

  • 列表是有序的可变元素的集合,使用中括号[]包围,元素之间用逗号分隔
  • 列表是动态的,可以随时扩展和收缩
  • 列表是异构的,可以同时存放不同类型的对象
  • 列表中允许出现重复元素

列表使用:创建

  • 创建列表

    • 通过构造函数创建 li = list()
    • 中括号创建并填充 li = [1,2,3]
    • 列表推导式li = [x for x in range(10)]

列表使用:索引

  • 索引

    • 默认正向索引,编号从 0 开始。
    • 支持反向索引,编号从-1 开始。

列表使用:切片

  • 切片 [start: stop: step]

    • start 值: 指示开始索引值,如果没有指定,则默认开始值为 0;
    • stop 值: 指示到哪个索引值结束,但不包括这个结束索引值。如果没有指定,则取列表允许的最大索引值;
    • step 值: 步长值指示每一步大小,如果没有指定,则默认步长值为 1。
    • 三个值都是可选的,非必填

列表使用:运算符

  • 重复

    • 使用 * 运算符可以重复生成列表元素。
  • 合并

    • 使用 + 加号运算符,可以将两个列表合二为一。

列表使用:成员检测

  • in:检查一个对象是否在列表中,如果在则返回 True,否则返回 False。
  • not in:检查一个列表是否不包含某个元素。如果不在返回 True,否则返回 False。

列表方法 append()

  • append(item):将一个对象 item 添加到列表的末尾。
  • 入参:对象 item
  • 返回:None

列表方法 extend()

  • extend(iterable):将一个可迭代对象的所有元素,添加到列表末尾。
  • 入参:可迭代对象 iterable
  • 返回:None

列表方法 insert()

  • insert(index, item):将一个对象插入到指定的索引位置
  • 入参:索引值 index ,一个对象 item
  • 返回:None
  • 原索引位置及后面的元素后移一位

列表方法 pop()

  • pop(index) 或 pop()
  • 弹出并返回所指定索引的元素。
  • 入参:索引值 index,可不传
  • 返回:指定索引的元素
  • 返回:未指定索引则返回末尾元素
  • 如果索引值不正确,或者列表已经为空,则引发 IndexError 错误

列表方法 remove()

  • remove(item)
  • 移除列表中第一个等于 item 的元素
  • 入参:指定元素 item
  • 返回:None
  • 目标元素必须已存在,否则会报 ValueError

列表方法 sort()

  • sort(key=None, reverse=False)

  • 对列表进行原地排序,只使用 < 来进行各项间比较。

  • 入参:支持 2 个关键字参数:

    • key:指定带有一个参数的函数,用于从每个列表元素中提取比较键。
    • reverse:默认值为 False 表示升序,为 True 表示降序
  • 返回:None

列表方法 reverse()

  • reverse():将列表中的元素顺序反转
  • 参数:无
  • 返回:None
  • 反转只是针对索引值,元素之间不相互比较。

列表嵌套

  • 嵌套列表是指在列表里存放列表
  • 列表的常用方法都适用于嵌套列表

列表推导式

  • 列表推导式是指循环创建列表,相当于 for 循环创建列表的简化版
  • 语法:[x for x in li if x ...]

Tuple 元组

元组定义

  • 元组是有序的不可变对象集合
  • 元组使用小括号包围,各个对象之间使用逗号分隔
  • 元组是异构的,可以包含多种数据类型

元组使用:创建

  • 创建

    • 使用逗号分隔 tp = 1,2,3
    • 通过小括号填充元素tp = (1,2,3)
    • 通过构造方法 tuple(iterable)

元组使用:索引

  • 索引

  • 可以通过索引值来访问对应的元素。

    • 正向索引,默认编号从 0 开始
    • 反向索引,默认编号从-1 开始

元组使用:切片

  • 切片 [start: stop: step]

    • 三个值都是可选的,非必填
    • start 值: 指示开始索引值,如果没有指定,则默认开始值为 0;
    • stop 值:指示到哪个索引值结束,但不包括这个结束索引值。如果没有指定,则取元组允许的最大索引值;
    • step 值:步长值指示每一步大小,如果没有指定,则默认步长值为 1。

元组常用方法 index()

  • index(item)
  • 返回与目标元素相匹配的首个元素的索引。
  • 目标必须在元组中存在的,否则会报错

元组常用方法 count()

  • count(item):返回某个元素出现的次数。
  • 入参:对象 item
  • 返回:次数

元组解包

  • 元组解包:把一个可迭代对象里的元素,一并赋值到由对应的变量组成的元组中。
# 传统逐个赋值的方式
t = (1, 2, 3)
a = t[0]
b = t[1]
c = t[2]
print(a, b, c)

# 使用元组解包,一气呵成
a, b, c = (1, 2, 3)
print(a, b, c)

元组与列表

  • 相同点

    • 都是有序的
    • 都是异构的,能够包含不同类型的对象
    • 都支持索引和切片
  • 区别

    • 声明方式不同,元组使用(),列表使用 []
    • 列表是可变的,元组是不可变的

Set 集合

集合定义

  • 无序的唯一对象集合
  • 用大括号{}包围,对象相互之间使用逗号分隔
  • 集合是动态的,可以随时添加或删除元素
  • 集合是异构的,可以包含不同类型的数据

集合使用:创建

  • 创建

    • 通过使用{}填充元素
    • 通过构造方法 set()
    • 通过集合推导式
"""创建集合"""
# 1、使用大括号{}填充元素
st4 = {1, 2, 3}
st5 = {'a', 'b', 'c'}

# 2、使用构造方法创建集合
st1 = set()  # 空集合
st2 = set('hogwarts')

li = [1, 1, 2, 2, 3, 3]
st3 = set(li)


# 3、使用集合推导式
st6 = {x for x in li}

# 注意:不要单独使用{ }来创建空集合
st7 = {}  # 这是字典类型
print(type(st7))

集合使用:成员检测

  • in

    • 判断元素是否在集合中存在
  • not in

    • 判断元素是否在集合中不存在

集合方法 add()

  • add(item):将单个对象添加到集合中
  • 入参:对象 item
  • 返回:None

集合方法 update()

  • update(iterable)
  • 批量添加来自可迭代对象中的所有元素
  • 入参:可迭代对象 iterable
  • 返回:None

集合方法 remove()

  • remove(item):从集合中移除指定元素 item。
  • 入参:指定元素值
  • 返回:None
  • 如果 item 不存在于集合中则会引发 KeyError

集合方法 discard()

  • discard(item):从集合中移除指定对象 item。
  • 入参:指定对象值
  • 返回:None
  • 元素 item 不存在没影响,不会抛出 KeyError 错误。

集合方法 pop()

  • pop():随机从集合中移除并返回一个元素。
  • 入参:无。
  • 返回:被移除的元组。
  • 如果集合为空则会引发 KeyError。

集合方法 clear()

  • clear():清空集合,移除所有元素
  • 入参:无
  • 返回:None

集合运算

集合运算:交集

  • 交集运算
  • intersection()
  • 操作符:&

集合运算:并集

  • 并集运算
  • union()
  • 操作符:|

集合运算:差集

  • 差集运算
  • difference()
  • 操作符: -

集合推导式

  • 类似列表推导式,同样集合支持集合推导式
  • 语法:{x for x in ... if ...}

Dict 字典

字典定义

  • 字典是无序的键值对集合
  • 字典用大括号{}包围
  • 每个键/值对之间用一个逗号分隔
  • 各个键与值之间用一个冒号分隔
  • 字典是动态的

字典使用:创建

  • 创建字典

    • 使用大括号填充键值对
    • 通过构造方法 dict()
    • 使用字典推导式

字典使用:访问元素

  • 访问元素

    • 与字典也支持中括号记法[key]
    • 字典使用键来访问其关联的值。
    • 访问时对应的 key 必须要存在

字典使用:操作元素

  • 语法:dict[key] = value

  • 添加元素

    • 键不存在
  • 修改元素

    • 键已经存在

字典使用:嵌套字典

  • 嵌套字典
  • 字典的值可以是字典对象

字典方法 keys()

  • keys()
  • 返回由字典键组成的一个新视图对象。
  • 入参:无

字典方法 values()

  • values()
  • 返回由字典值组成的一个新视图对象。

字典方法 items()

  • items()
  • 返回由字典项 ((键, 值) 对) 组成的一个新视图对象。

字典方法 get()

  • get(key)

  • 获取指定 key 关联的 value 值。

  • 入参:

    • key:字典的键,必传。
  • 返回:

    • 如果 key 存在于字典中,返回 key 关联的 value 值。
    • 如果 key 不存在,则返回 None。
  • 此方法的好处是无需担心 key 是否存在,永远都不会引发 KeyError 错误。

字典方法 update()

  • update(dict)

  • 使用来自 dict 的键/值对更新字典,覆盖原有的键和值。

  • 入参:

    • dict:字典对象,必传
  • 返回:None

字典方法 pop()

  • pop(key)

  • 删除指定 key 的键值对,并返回对应 value 值。

  • 入参:

    • key:必传
  • 返回:

    • 如果 key 存在于字典中,则将其移除并返回 value 值
    • 如果 key 不存在于字典中,则会引发 KeyError。

字典推导式

  • 字典推导式:可以从任何以键值对作为元素的可迭代对象中构建出字典。
  • 实例:给定一个字典对象{'a': 1, 'b': 2, 'c': 3},找出其中所有大于 1 的键值对,同时 value 值进行平方运算。
# 未使用字典推导式的写法
dc = {'a': 1, 'b': 2, 'c': 3}
d_old = dict()
for k, v in dc.items():
    if v > 1:
        d_old[k] = v ** 2
print(d_old)

# 使用字典推导式
d_new = {k : v ** 2 for k,v in dc.items() if v > 1 }
print(d_new)

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/282567.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python练习2【题解///考点列出///错题改正】

一、单选题 【文件】 *1.【单选题】 ——文件&#xff1a;读取方法 下列哪个选项可以从文件中读取任意字节的内容&#xff1f;&#xff08;C &#xff09;A A.read() B.readline() C.readlines() D.以上全部 A\B\C三种方法都是可以读取文件中任意的字节内容的&#xff0…

消息队列基础知识

学一点&#xff0c;整一点&#xff0c;基本都是综合别人的&#xff0c;弄成我能理解的内容 https://blog.csdn.net/BenJamin_Blue/article/details/125946812 https://blog.csdn.net/qq_46119575/article/details/129794304 &#x1f4cc;导航小助手&#x1f4cc; 生产者-消费者…

JS作用域:全局作用域,函数作用域,块级作用域

JS作用域&#xff1a;全局作用域&#xff0c;函数作用域&#xff0c;块级作用域 背景作用域全局作用域函数作用域块级作用域通过调用栈分析块级作用域开发者工具查看作用域选项卡示例 背景 由于 JavaScript 存在变量提升这种特性&#xff0c;从而导致很多与直觉不符的代码&…

详解数组的轮转

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

Git 分布式版本控制系统(序章1)

第一章 Git 分布式版本控制系统 为什么学Git? 某些企业面试需要掌握Git&#xff0c;同时&#xff0c;也方便管理自己的Qt项目。 一、Git 客户端下载&#xff08;Windows&#xff09; 下载地址 https://gitee.com/all-about-git#git-%E5%A4%A7%E5%85%A8 二、Git 的特点 分支…

vue3引入百度地图(两种方法)

首先要有百度开放平台并进行注册&#xff0c;不懂看这里 ### 第一种方法 地图引入流程 安装vue-baidu-map-3x插件 参考官网地址&#xff1a;快速上手 | vue-baidu-map-3x npm install vue-baidu-map-3x --save 在public/index.html文件中引入 <!-- 百度地图 --> &…

微软开源,全平台通用:Shell 自动补全工具 | 开源日报 No.132

microsoft/inshellisense Stars: 7.6k License: MIT inshellisense 是一个为 Shell 提供 IDE 风格自动补全的工具。它是一个终端本地运行时自动完成&#xff0c;支持 600 多个命令行工具&#xff0c;并且可以在 Windows、Linux 和 macOS 上使用。主要功能包括安装后可通过运行…

HTML教程(1)——概述和第一个网页

一、什么是HTML HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言&#xff0c;而是一种标记语言 (markup language)标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页 二、什么是HTML 标签 H…

设计模式:工厂方法模式(讲故事图文易懂)

目录 简单工厂工厂方法模式 简单工厂 定义&#xff1a;简单工厂由一个工厂根据参数类型决定创建哪种产品的实例。 简单工厂不包含在23种设计模式之内&#xff08;简单工厂不满足开闭原则&#xff0c;后面会详细讲&#xff09; 举例&#xff1a;张三去4S店买了车&#xff0c;显…

城市生态数据大屏,PSD设计稿

现分享生态系统可视化大数据大屏的 Photoshop 源文件&#xff0c;下载即用&#xff01;以下为截图示意。 若需 更多行业 相关的大屏&#xff0c;请移步小7的另一篇文章&#xff1a;200套精选数据可视化大屏&#xff0c;大屏PSD设计&#xff08;各行业大屏UI&#xff09;https:…

DevExpress 皮肤改变触发后触发的事件,用来保存皮肤配置

代码&#xff1a; private UserLookAndFeel userLookAndFeel; public MainGeneral() {InitializeComponent();// 创建 UserLookAndFeel 实例userLookAndFeel new UserLookAndFeel(this);// 订阅 StyleChanged 事件userLookAndFeel.StyleChanged UserLookAndFeel_StyleChange…

UDP套接字搭建简易服务器与客户端

使用UDP套接字搭建 文章目录 使用UDP套接字搭建前言一、基本结构二、使用步骤1.服务器端2.客户端 三、效果展示总结 前言 这次较上个版本《Python 网络编程之搭建简易服务器和客户端》https://only-me.blog.csdn.net/article/details/135251171增加了&#xff1a; UDP协议来进…

1.PHP简单入门

1.PHP代码执行方式 PHP是在服务器端执行&#xff0c;然后返回给用户结果。 如果直接使用浏览器打开&#xff0c;就会解析为文本。 意思是说&#xff0c;浏览器通过 http请求&#xff0c;才能够执行php页面。 2.PHP代码框架 开启本机服务器&#xff08;下载软件略&#xff09…

数据结构: 位图

位图 概念 用一个bit为来标识数据在不在 功能 节省空间快速查找一个数在不在一个集合中排序 去重求两个集合的交集,并集操作系统中的磁盘标记 简单实现 1.设计思想:一个bit位标识一个数据, 使用char(8bit位)集合来模拟 2.预备工作:a.计算这个数在第几个char b.是这个ch…

全球日光地图分布地图数据

日光地图分布地图数据 Daylight 是全球开放地图数据的完整分发版&#xff0c;可在社区和专业地图制作者的支持下免费获取。我们将 OpenStreetMap 等项目的全球贡献者的工作与日光制图合作伙伴的质量和一致性检查结合起来&#xff0c;创建免费、稳定且易于使用的街道比例全球地…

【K8S 部署】基于kubeadm搭建Kurbernetes集群

目录 一、基本架构 二、环境准备: 三、安装部署 1、所有节点安装docker 2、、所有节点安装kubeadm&#xff0c;kubelet和kubectl 3、配置网络--flannel 4、测试 pod 资源创建 四、安装部署与k8s集群对接的Harbor仓库 五、Dashboard安装部署&#xff1a; 一、基本架构…

基于单片机的语音识别自动避障小车(论文+源码)

1.系统设计 此次基于单片机的语音识别自动避障小车&#xff0c;以STC89C52单片机作为系统的主控制器&#xff0c;利用超声波模块来实现小车与障碍物距离的测量并通过LCD液晶显示&#xff0c;当距离低于阈值时会通过WT588语音模块进行报警提示&#xff0c;并且小车会后退来躲避…

微信小程序-父子页面传值

父子页面传值 父页面向子页面传值 方法一&#xff1a; 父页面&#xff1a; 1. /page/xxx/xxx?id1子页面&#xff1a; onLoad:function(option){ }方法二 <bindtap“func” data-xxx””> 子页面向父页面传值 定义父子页面 父页面&#xff1a;hotspot 子页面&a…

uni-app App.vue生命周期全局样式全局存储globalData

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

程序员必备的数据处理神器-瑞士军刀cyberchef

本文将介绍一款强大的工具&#xff0c;囊括了网络世界范围内绝大数据的编解码技术&#xff0c;加解密技术&#xff0c;数格式转换技术&#xff0c;并提供了编码和解码&#xff0c;加解密以及数据转换的方法方法。对于程序员&#xff0c;这一一款不可多得的神器&#xff0c;在也…