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): # ...
随机推荐
- A - A Supermarket (贪心, 并查集)
超市里有n个产品要卖,每个产品都有一个截至时间dx(从开始卖时算起),只有在这个截至时间之前才能卖出并且获得率润dy. 有多个产品,所有可以有不同的卖出顺序,每卖一个产品要占用1个单位的时间,问最多能 ...
- map详细的复习
map 就是一种基于自建红黑树的 一一对应的hash 的容器 通过模板方式实现 map<type,type> mapname: 前边是key 后边是 vale 转载如下作者:sevenc ...
- zjnu1707 TOPOVI (map+模拟)
Description Mirko is a huge fan of chess and programming, but typical chess soon became boring for h ...
- hdu2430Beans(单调队列)
Mr. Pote's shop sells beans now. He has N bags of beans in his warehouse, and he has numbered them ...
- c语言中qsort函数的使用、编程中的一些错误
qsort()函数: 功能:相当于c++sort,具有快排的功能,复杂度的话nlog(n)注:C中的qsort()采用的是快排算法,C++的sort()则是改进的快排算法.两者的时间复杂度都是nlog ...
- Jenkins+ant+Jmeter接口自动化框架搭建
工具准备 JDK: jdk1.8.0_111 Ant: apache-ant-1.9.9 Jmeter: apache-jmeter-3.1 Jenkins: jenkins-2.7.4 JDK安装 ...
- XV6学习(14)Lab fs: File system
代码在github上. 这次实验是要对文件系统修改,使其支持更大的文件以及符号链接,实验本身并不是很复杂.但文件系统可以说是XV6中最复杂的部分,整个文件系统包括了七层:文件描述符,路径名,目录,in ...
- codeforces 858A
A. k-rounding time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- cin的用法
int val=0; cin>>val; 上述程序先定义了一个整型数据val,通过cin读取数据放在val中,如果输入的整型数据,则读取成功,返回的是>>左侧的对象,也就是is ...
- springboot demo(一)快速开始
快速入门 maven构建项目 1.访问http://start.spring.io/ 2.选择构建工具Maven Project.Spring Boot版本2.26以及一些工程基本信息,点击" ...