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])

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux之Tcp粘包笔记

目录 一.网络传输四层模型 二.数据传输中数据包传输的两个限制概念 三.数据传输的中粘包问题 四.数据组装的原因 Nagle算法原理: 五.关闭Nagle优化处理粘包问题吗&#xff1f; 六.粘包处理方法 a.设置消息边界&#xff1a; b.定义消息长度&#xff1a; 七.UDP是否会出…

【C语言算法刷题】第2题 图论 dijkastra

题目描述 一个局域网内有很多台电脑&#xff0c;分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样&#xff0c;所以感染时间不一样&#xff0c;感染时间用 t 表示。 其中网络内一台电脑被病毒感染&#xff0c;求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不…

软件测试压力太大了怎么办?

本文其实是知乎上针对一个问题的回答&#xff1a; 目前在做软件测试&#xff0c;主要负责的是手机端的项目测试&#xff0c;项目迭代很快&#xff0c;每次上线前验正式都会发现一些之前验测试包时候没有发现的问题&#xff0c;压力太大了&#xff0c;应该怎么调整 看过我之前其…

枚举与模拟 练习

练习题基于《C/C程序设计竞赛真题实战特训教程&#xff08;图解版&#xff09;》 目录 1.1 卡片 题目描述 代码实现 题解笔记 总评 注意点 重点解释 1.2 回文日期 题目描述 输入描述 输出描述 代码实现 题解笔记 总评 注意点 重点解释 1.1 卡片 题目描述 小蓝…

Redis高阶5-布隆过滤器

Redis布隆过滤器 ​ 由一个初始值都为零的bit数组和多个哈希函数构成&#xff0c;用来快速判断集合中是否存在某个元素 目的减少内存占用方式不保存数据信息&#xff0c;只是在内存中做一个是否存在的标记flag 布隆过滤器&#xff08;英语&#xff1a;Bloom Filter&#xff0…

vim如何设置自动缩进

:set autoindent 设置自动缩进 :set noautoindent 取消自动缩进 &#xff08;vim如何使设置自动缩进永久生效&#xff1a;vim如何使相关设置永久生效-CSDN博客&#xff09;

检测到联想鼠标自动调出运行窗口,鼠标自己作为键盘操作

联想鼠标会自动时不时的调用“运行”窗口 然后鼠标自己作为键盘输入 然后打开这个网页 &#xff08;不是点击了什么鼠标外加按键&#xff0c;这个鼠标除了左右和中间滚轮&#xff0c;没有其他按键了&#xff09;

(Halcon)轮廓等分切割(项目分析)

目标&#xff1a;获取绿色圆所在位置&#xff08;可用于点焊/点胶引导&#xff09; 实现思路 一&#xff0c;相机标定板标定&#xff08;如果实战用于点焊/点胶引导需要做图像畸变校正以减小误差&#xff09; 相机标定 如何做一个C#仿Halcon Calibration插件-CSDN博客 二&…

Java面试题2025-Mysql

1.什么是BufferPool&#xff1f; Buffer Pool基本概念 Buffer Pool&#xff1a;缓冲池&#xff0c;简称BP。其作用是用来缓存表数据与索引数据&#xff0c;减少磁盘IO操作&#xff0c;提升效率。 Buffer Pool由缓存数据页(Page) 和 对缓存数据页进行描述的控制块 组成, 控制…

开始步入达梦中级dba

分析内存使用需要的方法之一 disql /nolog conn sysdba/sysdbaselect value from v$parameter where nameMEMORY_LEAK_CHECK; SP_SET_PARA_VALUE(0,MEMORY_LEAK_CHECK,1); select * from V$MEM_REGINFO; select * from V$MEM_HEAP;

UE求职Demo开发日志#7 强化属性完善

1 实现思路设计 定义一个结构体记录技能树一个单元的信息&#xff0c;命名为FStrengthenCellInfo&#xff0c;一个TArray记录技能树整体信息&#xff0c;需要以下信息&#xff1a; 1.TArray前置技能index 2.FString 描述文本 3.TArray<FMyItemInfo>激活需要的物品ID和…

Qt中QVariant的使用

1.使用QVariant实现不同类型数据的相加 方法&#xff1a;通过type函数返回数值的类型&#xff0c;然后通过setValue来构造一个QVariant类型的返回值。 函数&#xff1a; QVariant mainPage::dataPlus(QVariant a, QVariant b) {QVariant ret;if ((a.type() QVariant::Int) &a…

做Midjourney最好图文教程-提示词公式以及高级参数讲解

先说Midjourney万能公式 填写在绘图提示词框里的内容就是提示词&#xff0c;也叫prompt 用途&#xff1a;让Midjourney生成对应图片&#xff08;符合提示词所描述内容的图片&#xff09;&#xff0c;控制图片生成方向种类&#xff1a;文本提示、图像提示、参数提示&#xff0…

【论文阅读】RAG-Reward: Optimizing RAG with Reward Modeling and RLHF

研究背景 研究问题&#xff1a;这篇文章要解决的问题是如何优化检索增强生成&#xff08;RAG&#xff09;系统&#xff0c;特别是通过奖励建模和人类反馈强化学习&#xff08;RLHF&#xff09;来提高大型语言模型&#xff08;LLMs&#xff09;在RAG任务中的效果。研究难点&…

《Trustzone/TEE/安全从入门到精通-标准版》

CSDN学院课程连接:https://edu.csdn.net/course/detail/39573 讲师介绍 拥有 12 年手机安全、汽车安全、芯片安全开发经验,擅长 Trustzone/TEE/ 安全的设计与开发,对 ARM 架构的安全领域有着深入的研究和丰富的实践经验,能够将复杂的安全知识和处理器架构知识进行系统整…

Pyecharts之地图图表的强大功能

在数据可视化领域中&#xff0c;地图图表是一种强大的工具&#xff0c;能够直观地展现与地理位置相关的数据信息&#xff0c;帮助我们更好地洞察数据的地域特征和分布规律。Pyecharts 为我们提供了丰富的地图图表功能&#xff0c;让我们可以轻松实现各种地理信息的可视化展示。…

政安晨的AI大模型训练实践三:熟悉一下LF训练模型的WebUI

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 目录 启动WebUI 微调模型 LLaMA-Factory 支持通过 WebUI 零代码微调大语言模型。 启动Web…

【2024年华为OD机试】(A卷,200分)- 创建二叉树 (JavaScriptJava PythonC/C++)

一、问题描述 构建二叉树并返回根节点 题目描述 请按下列描述构建一颗二叉树,并返回该树的根节点: 先创建值为-1的根结点,根节点在第0层;然后根据operations依次添加节点:operations[i] = [height, index] 表示对第 height 层的第 index 个节点 node,添加值为 i 的子节…

有限元分析学习——Anasys Workbanch第一阶段_终篇_齿轮整体强度案例分析

目录 0 序言 1 齿轮整体强度分析案例 1.1 模型简化 1.2 前处理 1&#xff09;分析类型选择 2&#xff09;设置平面参数 3&#xff09;约束、载荷及接触 2 控制网格 a.初次生成网格&#xff0c;对局部网格不做控制 b.第一次调整接触网格&#xff0c;接触面网格控制为…

Final2x--开源AI图片放大工具

Final2x--开源AI图片放大工具 链接&#xff1a;https://pan.xunlei.com/s/VOHSklukQAquUn3GE7eHJXfOA1?pwdr3r3#