Python:元组构造式和字典推导式

(Python 元组构造式和字典推导式整理笔记)

1. 元组构造式
1.1 创建元组
  • 使用圆括号

    tuple1 = (1, 2.5, ('three', 'four'), [True, 5], False)
    print(tuple1)  # 输出: (1, 2.5, ('three', 'four'), [True, 5], False)
  • 省略圆括号

    tuple2 = 2, True, 'five', 3.5
    print(tuple2)  # 输出: (2, True, 'five', 3.5)
  • 创建空元组

    #法1:圆括号
    empty_tuple = ()
    print(empty_tuple)  # 输出: ()
    #法2:tuple()
    empty_tuple = tuple()
    print(empty_tuple)  # 输出: ()
  • 使用 tuple() 函数

    tuple1 = tuple([1, 2.5, ('three', 'four'), [True, 5], False])
    print(tuple1)  # 输出: (1, 2.5, ('three', 'four'), [True, 5], False)
    tuple2 = tuple((2, True, 'five', 3.5))
    print(tuple2)  # 输出: (2, True, 'five', 3.5)
    empty_tuple = tuple()
    print(empty_tuple)  # 输出: ()
1.2 访问元组元素
  • 通过索引访问

    my_tuple = (10, 20, 30)
    print(my_tuple[0])  # 输出: 10
    print(my_tuple[-1])  # 输出: 30
1.3 元组的不可变性
  • 尝试修改元组会引发错误

    my_tuple = (1, 2, 3)
    my_tuple[0] = 100  # 报错: TypeError
1.4 元组的用途
  • 存储不应更改的数据

    user_info = ("Alice", 30, "alice@example.com")
    print(user_info)  # 输出: ('Alice', 30, 'alice@example.com')
  • 作为字典的键

    my_dict = {(1, 2): "value1", (3, 4): "value2"}
    print(my_dict[(1, 2)])  # 输出: value1
  • 从函数返回多个值

    def get_user_info():
        return "Alice", 30, "alice@example.com"
    
    name, age, email = get_user_info()
    print(name)  # 输出: Alice
    print(age)   # 输出: 30
1.5 元组的生成式
  • 元组生成式

    my_tuple = (i for i in range(11))
    print(my_tuple)  # 输出: <generator object <genexpr> at 0x0000023EDB24AA40>
    print(tuple(my_tuple))  # 输出: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
2. 字典推导式
2.1 基本语法
  • 基本语法

    {key_expression: value_expression for item in iterable}
  • 带条件的字典推导式

    {key_expression: value_expression for item in iterable if condition}
2.2 示例
  • 创建一个简单的字典

    squares = {i: i * i for i in range(5)}
    print(squares)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
  • 从列表中创建字典

    names = ['bigshow', 'cina', 'owens']
    ages = [25, 30, 35]
    people = {name: age for name, age in zip(names, ages)}
    print(people)  # 输出: {'bigshow': 25, 'cina': 30, 'owens': 35}
  • 带条件的字典推导式

    even_squares = {i: i * i for i in range(10) if i % 2 == 0}
    print(even_squares)  # 输出: {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
  • 字典的键值转换

    people = {'Alice': 25, 'Bob': 30, 'Charlie': 35}
    age_to_name = {age: name for name, age in people.items()}
    print(age_to_name)  # 输出: {25: 'Alice', 30: 'Bob', 35: 'Charlie'}
  • 嵌套字典的推导

    nested_dict = {i: {j: i + j for j in range(3)} for i in range(3)}
    print(nested_dict)  # 输出: {0: {0: 0, 1: 1, 2: 2}, 1: {0: 1, 1: 2, 2: 3}, 2: {0: 2, 1: 3, 2: 4}}
2.3 练习
  • 练习1:从字典 mcase1 中获取键 k.lower() 对应的值,值不在字典中返回默认值0

    mcase1 = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
    print({k.lower(): mcase1.get(k.lower(), 0) + mcase1.get(k.upper(), 0) for k in mcase1})
  • 练习2

    dict1 = {"a": 10, "B": 20, "C": True, "D": "hello world", "e": "python教程"}
  • 练习3

    dict1 = {"a": 10, "B": 20, "C": True, "D": "hello world", "e": "python教程"}
  • 练习4:将列表中长度大于3的元素转大写

    names = ['cina', 'kitty', 'bigshow', 'join', 'ab', 'd', 'jj']
    print([name.upper() for name in names if len(name) > 3])
  • 练习6:生成一个列表,其中包含所有满足 x 是偶数且 y 是奇数的元组 (x,y),其中 x 和 y 都在 0 到 4 之间。

    print([(x, y) for x in range(5) if x % 2 == 0 for y in range(5) if y % 2 == 1])
  • 练习7:打印列表数组M每个元素的的i[2](第3个元素)的新列表

    M = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    print([i[2] for i in M])

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

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

相关文章

appium自动化环境搭建

一、appium介绍 appium介绍 appium是一个开源工具、支持跨平台、用于自动化ios、安卓手机和windows桌面平台上面的原生、移动web和混合应用&#xff0c;支持多种编程语言(python&#xff0c;java&#xff0c;Ruby&#xff0c;Javascript、PHP等) 原生应用和混合应用&#xf…

vue3组件el-table报错

传给table标签的data不是数组就会报错&#xff0c; 摁着商品管理代码找了半天也没发现哪里错了&#xff0c;而且关闭报错表格数据能正常显示&#xff0c; 。。。 最后发现我还有个订单管理页面&#xff0c;这里面的data初始化成ref( )了&#xff0c;把这个组件注释掉&#xf…

基于SpringBoot+WebSocket的前后端连接,并接入文心一言大模型API

前言&#xff1a; 本片博客只讲述了操作的大致流程&#xff0c;具体实现步骤并不标准&#xff0c;请以参考为准。 本文前提&#xff1a;熟悉使用webSocket 如果大家还不了解什么是WebSocket&#xff0c;可以参考我的这篇博客&#xff1a; rWebSocket 详解&#xff1a;全双工…

《边界感知的分而治之方法:基于扩散模型的无监督阴影去除解决方案》学习笔记

paper&#xff1a;Boundary-Aware Divide and Conquer: A Diffusion-Based Solution for Unsupervised Shadow Removal 目录 摘要 1、介绍 2、相关工作 2.1 阴影去除 2.2 去噪扩散概率模型&#xff08;Denoising Diffusion Probabilistic Models, DDPM&#xff09; 3、方…

linux-mysql在centos7安装和基础配置

1.安装mysql数据库 1.使用官网安装 1.检查是否存在mysql的分支mariadb [rootlocalhost ~]# rpm -qa |grep mariadb mariadb-libs-5.5.64-1.el7.x86_64 [rootlocalhost ~]# 2.卸载这个分支包 [rootlocalhost ~]# rpm -qa | grep mariadb mariadb-libs-5.5.64-1.el7.x86_64 …

Python!从0开始学爬虫:(一)HTTP协议 及 请求与响应

前言 爬虫需要基础知识&#xff0c;HTTP协议只是个开始&#xff0c;除此之外还有很多&#xff0c;我们慢慢来记录。 今天的HTTP协议&#xff0c;会有助于我们更好的了解网络。 一、什么是HTTP协议 &#xff08;1&#xff09;定义 HTTP&#xff08;超文本传输协议&#xff…

MySQL数据库笔记——最左前缀原则原理及其注意事项

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍MySQL索引的关键潜规则——最左前缀原则。 文章目录 图示单值索引和联合索引单值索引联合索引 最左前缀原则示例分析1. 全值匹配查询时2. 匹配左…

Java数据结构 (链表反转(LinkedList----Leetcode206))

1. 链表的当前结构 每个方框代表一个节点&#xff0c;每个节点包含两个部分&#xff1a; 左侧的数字&#xff1a;节点存储的值&#xff0c;例如 45、34 等。右侧的地址&#xff08;如 0x90&#xff09;&#xff1a;表示该节点 next 指针指向的下一个节点的内存地址。 例子中&a…

IMX6ull项目环境配置

文件解压缩&#xff1a; .tar.gz 格式解压为 tar -zxvf .tar.bz2 格式解压为 tar -jxvf 2.4版本后的U-boot.bin移植进SD卡后&#xff0c;通过串口启动配置开发板和虚拟机网络。 setenv ipaddr 192.168.2.230 setenv ethaddr 00:04:9f:…

git基础指令大全

版本控制 git管理文件夹 进入要管理的文件夹 — 进入 初始化&#xff08;提名&#xff09; git init 管理文件夹 生成版本 .git ---- git在管理文件夹时&#xff0c;版本控制的信息 生成版本 git status 检测当前文件夹下的文件状态 (检测&#xff0c;检测之后就要管理了…

[高等数学学习记录]函数的极值与最大值最小值

1 知识点 1.1 函数的极值及其求法 定义 设函数 f ( x ) f(x) f(x) 在点 x 0 x_0 x0​ 的某邻域 U ˚ ( x 0 ) \mathring{U}(x_0) U˚(x0​) 内有定义&#xff0c;如果对于去心邻域 U ˚ ( x 0 ) \mathring{U}(x_0) U˚(x0​) 内的任一 x x x&#xff0c;有 f ( x ) <…

docker 简要笔记

文章目录 一、前提内容1、docker 环境准备2、docker-compose 环境准备3、流程说明 二、打包 docker 镜像1、基础镜像2、国内镜像源3、基础的dockerfile4、打包镜像 四、构建运行1、docker 部分2、docker-compose 部分2.1、构建docker-compose.yml2.1.1、同目录构建2.1.2、利用镜…

JVM常见知识点

在《深入理解Java虚拟机》一书中&#xff0c;介绍了JVM的相关特性。 1、JVM的内存区域划分 在真实的操作系统中&#xff0c;对于地址空间进行了分区域的设计&#xff0c;由于JVM是仿照真实的机器进行设计的&#xff0c;那么也进行了分区域的设计。核心区域有四个&#xff0c;…

电脑系统bcd文件损坏修复方法:小白也会的修复方法

电脑系统bcd文件损坏怎么办?当电脑开机时出现bcd文件损坏&#xff0c;一般情况是由于电脑系统的引导坏了&#xff0c;需要进行修复。现在越来越多的小伙伴遇到电脑引导丢失或者安装后无法正常引导的问题&#xff0c;我们现在一般是pe下进行修复引导&#xff0c;那么电脑系统bc…

Flutter_学习记录_导航和其他

Flutter 的导航页面跳转&#xff0c;是通过组件Navigator 和 组件MaterialPageRoute来实现的&#xff0c;Navigator提供了很多个方法&#xff0c;但是目前&#xff0c;我只记录我学习过程中接触到的方法&#xff1a; Navigator.push(), 跳转下一个页面Navigator.pop(), 返回上一…

【架构面试】二、消息队列和MySQL和Redis

MQ MQ消息中间件 问题引出与MQ作用 常见面试问题&#xff1a;面试官常针对项目中使用MQ技术的候选人提问&#xff0c;如如何确保消息不丢失&#xff0c;该问题可考察候选人技术能力。MQ应用场景及作用&#xff1a;以京东系统下单扣减京豆为例&#xff0c;MQ用于交易服和京豆服…

Git 如何将旧仓库迁移新仓库中,但不显示旧的提交记录

一、异常错误 场景&#xff1a;我想把旧仓库迁移新仓库中&#xff0c;放进去之后&#xff0c;新仓库会显示这个项目之前的所有提交&#xff0c;如何不显示这些旧的提交&#xff1f; 二、原因 我们需要将旧仓库迁移新仓库中&#xff0c;但是又不想在新仓库中显示旧的提交记录…

02-AD-绘制原理图(画示意图+添加已有P封装)

画示意图添加已有P封装 画原理示意图绘制原理图:电容绘制原理图:晶体绘制发光二极管绘制TVS二极管绘制按键绘制拨码开关绘制双排针绘制单排针绘制TYPE母座画图技巧:按顺序递增,删除不用的先画线,再画框 绘制AMS芯片填充框透明显示:防止遮挡其他部分不需要添加其他内容 绘制STM3…

C++红黑树详解

文章目录 红黑树概念规则为什么最长路径不超过最短路径的二倍&#xff1f;红黑树的时间复杂度红黑树的结构插入叔叔节点情况的讨论只变色(叔叔存在且为红)抽象的情况变色单旋&#xff08;叔叔不存在或叔叔存在且为黑&#xff09;变色双旋&#xff08;叔叔不存在或叔叔存在且为黑…

LLaMA-Factory 微调LLaMA3

LLaMA-Factory 框架 首先需要通过vscode连接远程服务器哦 如果是租赁的AutoDL服务器&#xff0c;一定要将模型下载到数据盘。 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e . 准备训练数据 训练数据&#xff1a; fintech.json …