当前位置: 首页 > news >正文

七、Python —— 元组、集合和字典

文章目录

  • 一、元组
    • 1.1、元组的初始化
    • 1.2、元组的解包
    • 1.3、元组的比较运算
    • 1.4、元组的其他操作
  • 二、集合 set
    • 2.1、集合的初始化
    • 2.2、集合的常用操作
    • 2.3、使用 for 循环遍历集合
  • 三、字典 map
    • 3.1、字典的初始化
    • 3.2、字典的常用操作
    • 3.3、使用 for 循环遍历字典
  • 四、补充


一、元组

 元组跟列表类似,只是 不支持 动态添加、删除元素、修改元素

1.1、元组的初始化

元组 需要用 小括号 括起来,中间的元素用 逗号隔开
注意,如果 初始化 只包含 一个元素 的元组,需要在该元素 后添加逗号

a = ()  # 初始化一个空元组
b = (1, 2)  # 含有2个整数的元组
c = 6, "Python", 3.14  # 小括号可以省略,等价于(6, "Python", 3.14)
d = (5,)  # 注意不能写成(5),(5)表示整数5
e = 5,  # 等价于(5,)print(a, b, c, d, e)
"""output
() (1, 2) (6, 'Python', 3.14) (5,) (5,)"""

1.2、元组的解包

t = 12345, 54321, "Hello!"  # 初始化一个元组
x, y, z = t  # 将元组解包,将元组内的三个值按顺序赋值给x、y、z
print(x, y, z)
"""output
12345 54321 Hello!"""

 所以,2. 判断语句 中学习的 交换操作,本质上是 元组的解包

a, b = 3, 4  # 将元组(3, 4)解包,分别赋值给a、b
a, b = b, a  # 将元组(b, a)解包,分别赋值给a、b

 同样地,6. 函数函数返回多个值,本质上也是 返回了一个元组

def calc(x, y):return x + y, x * y  # 等价于 return (x + y, x * y)x, y = 3, 4
s, p = calc(x, y)  # 将(x + y, x * y)解包,分别赋值给s、p
print(s, p)

1.3、元组的比较运算

 元组和列表均支持 比较运算符==!=><>=<= 等,按字典序 进行比较。

1.4、元组的其他操作

 元组的 下标访问元素循环遍历切片加法和乘法运算 等操作,都 与列表相同


二、集合 set

 集合是 Python 中最常用的数据结构之一,用来 存储不同元素。注意,集合中的元素是 无序的

2.1、集合的初始化

创建集合花括号set()函数。注意:创建 空集合 只能用 set(),不能用 {},因为 {} 创建的是 空字典,会在下一小节里介绍字典。
 集合常见的初始化方式:

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}  # 会自动去除重复元素
print(basket)  # 重复的元素已经去除了s = set()  # 初始化一个空列表
print(s)a = [1, 2, 1, 3, 1]
b = set(a)  # 将列表转化成集合,一般是为了去重。
c = list(b)  # 将集合转化回列表
print(b, c)x = "abracadabra"
a = set(x)  # 将字符串中的每个字符存到集合中
b = str(a)  # 注意,这里并不能将集合转化回原字符串,而是用格式化表示集合中的内容
print(a, b)
"""output
{'apple', 'orange', 'banana', 'pear'}
set()
{1, 2, 3} [1, 2, 3]
{'r', 'a', 'c', 'b', 'd'} {'r', 'a', 'c', 'b', 'd'}"""

2.2、集合的常用操作

 假设 a 表示一个集合。

函数功能
len(a)返回集合中包含的元素数量
a.add(x)在集合中添加一个元素
a.remove(x)删除集合中的 x,如果 x 不存在,则报异常
a.discard(x)删除集合中的 x,如果 x 不存在,则不进行任何操作
x in a判断 x 是否在 a
x not in a判断 x 是否不在 a
a = {1, 2, 3}print(len(a))  # 输出3a.add(4)
print(a)  # 输出 {1, 2, 3, 4},注意集合中的元素是无序的。a.remove(2)
print(a)  # 输出 {1, 3, 4}#  a.remove(5)  # 因为5不存在,所以会报异常
a.discard(5)  # 因为5不存在,所以不进行任何操作
print(a)  # {1, 3, 4}

2.3、使用 for 循环遍历集合

 类似于列表,集合也可以用 for ... in ... 的形式遍历。例如:

a = {1, 2, 3}for x in a:  # 循环遍历整个集合print(x, end=' ')

三、字典 map

字典 是 Python 中最常用的数据结构之一,用来 存储 映射关系。注意,字典中的元素是 无序的

 不同于列表,字典以 key 进行索引 的,可以将 每个 key 映射到某个 valuekey 可以是 任何不可变类型,常用 可以作为 key的类型数字 和 字符串列表 因为是 可变的,所以 不能作为 keyvalue 可以是 任意类型

3.1、字典的初始化

创建字典花括号dict() 函数

tel = {'jack': 4098, 'sape': 4139}  # 创建一个字典
print(tel)  # 输出 {'jack': 4098, 'sape': 4139}a = dict()  # 创建一个空字典
a[123] = "abc"  # 在字典中插入一个key-value对
a[456] = "def"  # 在字典中插入一个key-value对
print(a)  # 输出 {123: 'abc', 456: 'def'}b = list(a)  # 将字典的关键字转化成列表
print(b)  # 输出[123, 456]

3.2、字典的常用操作

 假设 a 表示一个字典。

函数功能
len(a)返回字典中的元素对数
a[x]获取关键字 x 对应的值,如果 x 不存在,会报异常
a.get(x)获取关键字 x 对应的值,如果 x 不存在,会返回 None,不会报异常
a.get(x, y)获取关键字 x 对应的值,如果 x 不存在,会返回默认值 y,不会报异常
a[x] = y在字典中插入一对元素,如果关键字 x 已存在,则将它之前映射的值覆盖掉
del a[x]删除关键字 x 对应的元素对,如果 x 不存在,会报异常
x in a检查字典中是否存在关键字 x
x not in a检查字典中是否不存在关键字 x
a.keys()返回字典的所有 key
a.values()返回字典的所有 value
a.items()返回字典的所有由 keyvalue 组成的元组
a = {'abc': 1, 'def': 2, 'python': 3}  # 初始化一个字典print(len(a))  # 输出3
print(a['def'])  # 输出2
print(a.get('def'))  # 输出2
print(a.get('xyz', 5))  # 因为'xyz'不存在,所以输出默认值5a['hello'] = 4  # 插入一对元素 'hello' -> 4
print(a)  # 输出{'abc': 1, 'def': 2, 'python': 3, 'hello': 4}a['def'] = 5  # 更新'def'映射的值
print(a['def'])  # 输出5del a['python']  # 删除关键字'python'
print(a)  # 输出{'abc': 1, 'def': 5, 'hello': 4}print('hello' in a)  # 输出True
print(a.keys())  # 输出dict_keys(['abc', 'def', 'hello'])
print(a.values())  # 输出dict_values([1, 5, 4])
print(a.items())  # 输出dict_items([('abc', 1), ('def', 5), ('hello', 4)])

3.3、使用 for 循环遍历字典

 类似于列表,字典也可以用 for ... in ... 的形式遍历。例如:

a = {'abc': 1, 'def': 2, 'python': 3}  # 初始化一个字典for k in a:  # 遍历keyprint(k, end=' ')
print()  # 输出回车for k in a.keys():  # 遍历keyprint(k, end=' ')
print()  # 输出回车for v in a.values():  # 遍历valueprint(v, end=' ')
print()  # 输出回车for k, v in a.items():  # 遍历key-value对print("(%s, %d) " % (k, v), end=' ')
print()  # 输出回车
"""output
abc def python 
abc def python 
1 2 3 
(abc, 1)  (def, 2)  (python, 3)  """

四、补充

  1. map() 也可以用 for ... in ... 的形式遍历。例如:for x in map(int, input().split()) 可以遍历一行内 用空格隔开 的每个整数。
  2. map() 函数的 返回值 也可以 直接转化成 set(),例如:set(map(int, input().split())) 可以将一行 用空格隔开 的整数存到 set() 中。
  3. sorted() 函数可以将 列表、元组、集合、字典 排序,并返回一个 新列表。如果 对 字典 排序,则返回字典所有 key 排序 后的 列表

相关文章:

七、Python —— 元组、集合和字典

文章目录 一、元组1.1、元组的初始化1.2、元组的解包1.3、元组的比较运算1.4、元组的其他操作 二、集合 set2.1、集合的初始化2.2、集合的常用操作2.3、使用 for 循环遍历集合 三、字典 map3.1、字典的初始化3.2、字典的常用操作3.3、使用 for 循环遍历字典 四、补充 一、元组 …...

Aes加解密

加解密概念 加密AES加密填充模式加密模式示例 加密 通过一系列计算将明文转换成一个密文。 加密和解密的对象通常是字节数组&#xff08;有的语言动态数组类比切片&#xff09; 加密后的数据&#xff0c;可能有很多是不可读字符。通常会将其转换为可见的字符串。 直接将字节…...

【时时三省】Tessy 故障入侵 使用教程

目录 1,故障入侵 介绍 故障入侵适用场景: 打故障入侵的方法和选项介绍: 2,打单个函数的故障入侵 3,打整体用例的故障入侵 4,一个函数打多个故障入侵 山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 1,故障入侵 介绍 故障入侵适用场景: 故障入侵 …...

.NET 9 AOT的突破 - 支持老旧Win7与XP环境

引言 随着技术的不断进步&#xff0c;微软的.NET 框架在每次迭代中都带来了令人惊喜的新特性。在.NET 9 版本中&#xff0c;一个特别引人注目的亮点是 AOT&#xff08; Ahead-of-Time&#xff09;支持&#xff0c;它允许开发人员将应用程序在编译阶段就优化为能够在老旧的 Win…...

CondaValueError: Malformed version string ‘~‘: invalid character(s).

问题描述&#xff1a;在window下使用conda安装任何包都会报错。报错信息是CondaValueError: Malformed version string ~: invalid character(s). 解决办法&#xff1a;把.condarc文件的源地址删除&#xff08;八成是源地址访问不了了&#xff09;&#xff0c;只保存默认的&am…...

01-Ubuntu24.04LTS上安装PGSQL

目录 一、准备工作 1.1、系统要求 1.2 、更新 Ubuntu 系统 1.3 、安装依赖 1.4 、添加 PostgreSQL 16 软件源 二、安装 PostgreSQL 16 数据库 三、管理 PostgreSQL 服务 四、PostgreSQL 管理操作 4.1 、访问 Postgres 超级用户账户 4.2 、创建数据库并设置管理权限 4…...

Esp32使用micropython基于espnow实现语音对讲机

ESP-NOW协议介绍 ESP-NOW 是乐鑫自主研发的无连接通信协议,具有短数据包传输功能。该协议使多个设备能够以简单的方式相互通信。ESP-NOW 支持以下功能: 加密和未加密的单播通信; 混合加密和未加密的对等设备; 最多可携带 250 字节 的有效载荷; 发送回调功能,可以设置用于…...

Docker 容器隔离关键技术:SELinux

Docker 容器隔离关键技术&#xff1a;SELinux SELinux&#xff08;Security-Enhanced Linux&#xff09; 是 Linux 内核中的一项安全机制&#xff0c;用于实现强制访问控制&#xff08;MAC&#xff09;。Docker 利用了 SELinux 来增强容器的隔离性&#xff0c;通过对文件、进程…...

Java并发07之ThreadLocal

文章目录 1 ThreadLocal原理2 内部结构3 内存泄露问题4 entry的key为什么被设计为弱引用 1 ThreadLocal原理 ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private st…...

【单细胞数据库】癌症单细胞数据库CancerSEA

数据库地址&#xff1a;home (hrbmu.edu.cn) Cite Huating Yuan, Min Yan, Guanxiong Zhang, Wei Liu, Chunyu Deng, Gaoming Liao, Liwen Xu, Tao Luo, Haoteng Yan, Zhilin Long, Aiai Shi, Tingting Zhao, Yun Xiao, Xia Li, CancerSEA: a cancer single-cell state atlas…...

Rsa加解密 + 签名验签

Rsa加解密 概述聚合算法名称&#xff08;用于创建加密器&#xff09;基本概念填充方式分块加密 基本使用生成密钥加解密创建加密器设置模式&#xff08;加密&#xff09;、公钥对明文加密&#xff0c;并对结果进行Base64编码对以上结果&#xff0c;进行解密 设置模式&#xff0…...

bugku-web-留言板1

大小写绕过也不行 <ScRipt>ALeRt(“XSS”);</sCRipT> 双写绕过可以 <scscriptript>alert(z)</scscriptript> 改变大小写 在测试过程中&#xff0c;我们可以改变测试语句的大小写来绕过XSS规则&#xff1a; 比如&#xff1a;<script>alert(“xs…...

进程状态的学习

进程状态就是 task_struct 内的一个整数 状态间是可以进行转化的 运行&#xff1a; 每一个框都是进程的task_struct&#xff0c;都有唯一的pcb和pid来标识它的唯一性 让CPU选择一个进程去运行&#xff0c;本质是选择一个进程的PCB去运行&#xff0c;task_struct里一定有内存指…...

Vue 2.0->3.0学习笔记(Vue 3 (四)- Composition API 的优势)

Vue 2.0-&#xff1e;3.0学习笔记&#xff08;Vue 3 &#xff08;四&#xff09;- Composition API 的优势&#xff09; Composition API 的优势1. Options API 存在的问题2. Composition API 的优势 Composition API 的优势 1. Options API 存在的问题 笔记 使用传统OptionsA…...

close and shutdown?

背景&#xff1a;我们要讲述的是网络编程中常用的两个API&#xff1a; #include <unistd.h> int close(int fd); #include <sys/socket.h> int shutdown(int sockfd, int how); 以及TCP的半连接&#xff0c;半打开。 shutdown函数的行为依赖第二个参数区分&#xf…...

PostgreSQL + hasura + Apollo + GraphQL + React + Antd

技术栈 PostgreSQL hasura Apollo GraphQL React Antd 适用于复杂的查询,快速开发 环境安装 安装PostgreSQL hasura,使用docker安装 使用 Docker Compose 部署时&#xff0c;它会同时启动两个容器PostgreSQL和 Hasura GraphQL ,如下 version: "3.6" serv…...

Android笔记【10】

一、前言 学习课程时&#xff0c;对于自己不懂的点的记录。 二、内容 学习一段代码&#xff1a; val drawerState rememberDrawerState(DrawerValue.Closed)val scope rememberCoroutineScope()Scaffold (topBar{TopAppBar(navigationIcon {IconButton(onClick {scope.lau…...

Leetcode打卡:N皇后

执行结果&#xff1a;通过 题目&#xff1a;51 N皇后 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#…...

Linux内核4.14版本——ccf时钟子系统(3)——ccf一些核心结构体

目录 1. struct clk_hw 2. struct clk_ops 3. struct clk_core 4. struct clk_notifier 5. struct clk 6. struct clk_gate 7. struct clk_divider 8. struct clk_mux 9. struct clk_fixed_factor 10. struct clk_fractional_divider 11. struct clk_multiplier 12…...

[Deep Learning] 深度学习中常用函数的整理与介绍(pytorch为例)

文章目录 深度学习中常用函数的整理与介绍常见损失函数1. L2_loss | nn.MSELoss()公式表示&#xff1a;特点&#xff1a;应用&#xff1a;缺点&#xff1a;主要参数&#xff1a;示例用法&#xff1a;注意事项&#xff1a; 2. L1 Loss | nn.L1Loss数学定义&#xff1a;特点&…...

星际软件开发:为火星殖民地编写第一批代码

一、引言&#xff1a;当测试左移到大气层之外2041年&#xff0c;第一批火星殖民者即将启程。他们携带的不仅是氧气和速食&#xff0c;还有一座预装在密封舱里的微型数据中心。在这片红色荒漠上&#xff0c;代码将比氧气更早醒来——生命维持系统的控制逻辑、通讯中继的协议栈、…...

网络安全事件报告:从SolarWinds事件看全球合规挑战与应对策略

1. 事件回顾&#xff1a;SolarWinds事件为何成为安全领域的“分水岭”如果你在网络安全或IT运维领域工作&#xff0c;2020年底曝光的SolarWinds供应链攻击事件&#xff0c;绝对是一个绕不开的里程碑。它不像一次简单的数据泄露&#xff0c;更像是一场精心策划、潜伏已久的“数字…...

taotoken模型广场功能体验与主流模型选型建议

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 taotoken模型广场功能体验与主流模型选型建议 1. 平台入口与模型广场概览 登录Taotoken控制台后&#xff0c;最直观的功能入口之一…...

工业 AI 赋能采购:智能供应商匹配重构招标流程

Q1&#xff1a;传统企业采购招标&#xff0c;供应商对接与筛选存在哪些固有痛点&#xff1f;传统工业企业采购招标模式高度依赖人工经验&#xff0c;存在三大核心痛点&#xff1a;供应商资源固化&#xff1a;每次招标都需从零手动联络供应商&#xff0c;仅依靠采购人员个人记忆…...

技术生态依赖的实质与破局:从Android到自主可控的实践路径

1. 项目背景与核心议题解析最近在整理行业资料时&#xff0c;翻到一篇2013年的旧文&#xff0c;讨论的是当时中国工信部对国内移动产业过度依赖Android系统的担忧。虽然时过境迁&#xff0c;但文中提到的“技术自主可控”与“全球生态融入”之间的张力&#xff0c;在今天看来依…...

别再让CPU风扇狂转了!手把手教你为Edge/Chrome解锁B站HEVC/AV1硬解,省电又流畅

别再让CPU风扇狂转了&#xff01;解锁浏览器硬解B站视频的终极指南 每次打开B站看视频&#xff0c;笔记本风扇就开始"起飞"&#xff1f;明明只是看个1080P视频&#xff0c;CPU占用率却飙升到80%以上&#xff1f;这很可能是因为你的浏览器正在使用软件解码&#xff08…...

Mega:基于上下文工程的Brainbase平台AI开发效率革命

1. 项目概述&#xff1a;Mega&#xff0c;你的Brainbase平台AI工程专家如果你正在使用Claude Code、Cursor或者任何能读取文件的AI编程工具来构建基于Brainbase平台的对话式AI应用&#xff0c;那么你很可能遇到过这样的困境&#xff1a;你需要花费大量时间向AI解释Brainbase的架…...

Flutter + 开源鸿蒙实战 | 极简记账本 Day1:项目初始化 + 底部导航框架搭建

&#x1f525; Flutter 开源鸿蒙实战 | 极简记账本 Day1&#xff1a;项目初始化 底部导航框架搭建欢迎加入开源鸿蒙跨平台社区&#xff1a;https://openharmonycrossplatform.csdn.net 系列项目&#xff1a;极简记账本&#xff08;6 天完结&#xff09;环境&#xff1a;Flutt…...

2026 AI大模型API加速网站推荐

在AI开发领域&#xff0c;一个现实问题始终困扰着开发者&#xff1a;如何接入模型厂商的官方API&#xff1f;在海外&#xff0c;注册、绑卡、调用这三个步骤就能轻松解决。然而&#xff0c;国内开发者面临着跨境网络波动、外币支付门槛、发票合规需求以及多厂商Key碎片化管理等…...

Network-AI:解决多智能体协作竞态与状态冲突的协调层

1. 项目概述&#xff1a;Network-AI&#xff0c;一个解决多智能体“内讧”的协调器如果你正在用LangChain、CrewAI或者AutoGen构建AI智能体应用&#xff0c;大概率遇到过这样的场景&#xff1a;你部署了两个智能体&#xff0c;一个负责分析数据&#xff0c;一个负责生成报告。它…...