Python列表元组和字典解析式
以下内容基于Python 3x
列表解析式List comprehensive
解析式是一种语法糖,其优点有提高效率,减少工作量,减少出错,简化代码,提高可读性。
语法格式如下:
[expression for item in iterable if condition]
返回一个新的列表
查看几个例子即可明白:
# Example
# 迭代0-9至res1
res1 = [x for x in range(10)]
# 迭代0-9并且能整除2的结果至res2
res2 = [x for x in range(10) if x % 2 == 0]
# 迭代0-19能整除2和3的结果至res3
res3 = [x for x in range(20) if x % 2 == 0 and not x % 3]
print(res1, res2, res3, sep="\n")
# Result
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8]
[0, 6, 12, 18]
进阶:
# Example 1
res = []
for x in range(3):
for y in range(3):
res.append(x + y)
print(res)
# 使用列表解析式的 Example 1
res1 = [x + y for x in range(3) for y in range(3)]
print(res1)
# Example 2
res2 = []
for x in range(3):
for y in range(3):
if not (x % 2 or y % 2):
res2.append(x + y)
print(res2)
# Example 3
res3 = []
for x in range(3):
for y in range(3):
if x % 2 == 0:
if y % 2 == 0:
res3.append(x + y)
print(res3)
# 使用列表解析式的 Example 2 and Example 3
res4 = [x + y for x in range(3) for y in range(3) if not (x % 2 or y % 2)]
print(res4)
打印九九乘法表:
处理好样式格式化问题,其实就很好理解
# Example 4
for x in range(1, 10):
for y in range(1, x + 1):
print("{} * {} = {}\t".format(y, x, y * x), end='')
print()
# 使用列表解析式的 Example 4
[print("{} * {} = {}\t{}".format(y, x, y * x, '\n' if x == y else ''), end='') for x in range(1, 10) for y in range(1, x + 1)]
集合解析式Set comprehensive
语法格式:
{expression for item in iterable if condition}
返回一个新的集合
Example:
res = {x for x in range(5)}
print(res)
字典解析式Dict comprehensive
语法格式:
{key: value for item in iterable if condition}
返回一个新的字典
Example:
res = {chr(x): x for x in range(65, 70)}
print(res)
# Result
{'A': 65, 'B': 66, 'E': 69, 'D': 68, 'C': 67}
总结
列表解析式在Python2中引入,集合与字典解析式在Python3中引入,后来同样也支持了Python2.7。
一般来说,应该多应用解析式,简短、高效。如果看到一个解析式过于复杂,则可以考虑将其层层拆解为等价的for循环表达形式,然后去理解和应用。
Python列表元组和字典解析式的更多相关文章
- Python—列表元组和字典
Python-列表元组和字典 列表 元组 字典 列表: 列表是Python中的一种数据结构,他可以存储不同类型的数据.尽量存储同一种类型 列表索引是从0开始的,我们可以通过索引来访问列表的值. 列表的 ...
- Python成长笔记 - 基础篇 (三)python列表元组、字典、集合
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 一.列表和元组的操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义 ...
- python—列表,元组,字典
——列表:(中括号括起来:逗号分隔每个元素:列表中的元素可以是数字,字符串,列表,布尔值等等) (列表元素可以被修改) list(类) (有序的) [1]索引取值:切片取值:for循环:whi ...
- python列表元组
python列表元组 索引 切片 追加 删除 长度 循环 包含 定义一个列表 my_list = [] my_list = list() my_list = ['Michael', ' ...
- 【277】◀▶ Python 列表/元组/字典说明
目录: 前言 一.访问列表中的值 二.更新列表 三.删除列表元素 四.Python 列表脚本操作符 五.Python 列表函数 & 方法 参考:Python 列表(List)使用说明 列表截取 ...
- Python 列表,元组,字典
0)字符串切片 py_str = 'python' >>>py_str[0] #取第一个字符串,返回值为"p",超出范围会报错 >>>py_st ...
- Python 列表/元组/字典总结
序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列 ...
- Python列表,元组,字典,字符串方法笔记
01. 列表 1.1 列表的定义 List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组 专门用于存储 一串 信息 列表用 [] 定义,数据 之间使用 , 分隔 列 ...
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
随机推荐
- Java程序操作HDFS
1.新建项目2.导包 解压hadoop-2.7.3.tar.gzE:\工具\大数据\大数据提升资料\01-软件资料\06-Hadoop\安装包\Java1.8环境下编译\hadoop-2.7.3\ha ...
- CF-1451 E Bitwise Queries 异或 交互题
E - Bitwise Queries 传送门 题意 有一组序列,长度为 \(n(4\le n \le 2^{16})\),且 \(n\) 为 2 的整数次幂,序列中数值范围为 [0,n-1], 每次 ...
- Luogu T16048 会议选址
本题idea版权来自CSDN博客Steve_Junior的医院设置2. 并没有什么用的链接 题目背景 \(A\)国的国情十分独特.它总共有\(n\)个城市,由\(n-1\)条道路连接.国内的城市当然是 ...
- Codeforces Round #647 (Div. 2) D. Johnny and Contribution(BFS)
题目链接:https://codeforces.com/contest/1362/problem/D 题意 有一个 $n$ 点 $m$ 边的图,每个结点有一个从 $1 \sim n$ 的指定数字,每个 ...
- java的静态代码块和类变量的隐式覆盖
静态代码块特点:随着类的加载执行一次,且仅会执行一次 作用:初始化类中的static修饰的变量(static修饰的变量称为类变量.类变量和静态代码块差不多,类变量仅会被初始化一次) 一.静态代码块写法 ...
- c语言实现--顺序表操作
经过三天的时间终于把顺序表的操作实现搞定了.(主要是在测试部分停留了太长时间) 1;线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素. 2;采用的实现方式:一段地址连 ...
- ZYB loves Xor I HDU - 5269 字典树
题意: T组样例,给你n个数.你要找出来这n个数中任意两个数的二进制位中 最低位不同 的位置(假设是k),然后让所有2^k加起来就是结果 什么意思? 例如4 和 2 4的二进制是(100),2的二 ...
- 已处理证书链,但是在不受信任提供程序信任的根证书中终止 - Windows 7安装.Net Framework 4.6.2时出现此问题
https://blog.csdn.net/inchat/article/details/104294302
- ewebeditor 路径
1.关键文件的名称和路径Admin_Login.asp 登录页面Admin_Default.asp 管理首页Admin_Style.aspAdmin_UploadFile.aspUpload.aspA ...
- Swift 5.3 All In One
Swift 5.3 All In One refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!