本文基于python3。
目录
1、Python推导式
你可以理解成一种数据的处理方式。目的是为了构建一个新的数据序列。
Python 支持各种数据结构的推导式:
- 列表(list)推导式
- 字典(dict)推导式
- 集合(set)推导式
- 元组(tuple)推导式
各自从字面意思就知道,创建一个列表、字典、集合、元组。
我们本文只看列表(list)推导式。
2、列表(list)推导式
列表推导式创建列表的方式更简洁。
常见的用法:
- 对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表。
- 用满足特定条件的元素创建子序列。
2.1、定义
定义主要有两种:(该部分定义来自:菜鸟教程)
- 定义1:
[表达式 for 变量 in 列表]
[out_exp_res for out_exp in input_list]
- 定义2
[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
- out_exp_res:列表生成元素表达式,可以是有返回值的函数。
- for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中。
- if condition:条件语句,可以过滤列表中不符合条件的值。
总结:一个表达式,后面为一个 for 子句,然后跟着零个或多个 for 或 if 子句。结果是由表达式依据 for 和 if 子句求值计算而得出一个新列表。
基于总结话我们来实际操作一下。
2.2、实际操作
2.2.1、一个表达式,后面为一个 for 子句
创建 数值*2 的列表:
TestList = [x*2 for x in range(10)]
print(TestList)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
等价于以下语句:
TestList = []
for x in range(10):
TestList.append(x*2)
print(TestList)
2.2.2、一个表达式,后面为一个 for 子句,然后,跟着if 子句。
创建 全是偶数 的列表:
TestList = [i for i in range(10) if i % 2 == 0]
print(TestList)
# [0, 2, 4, 6, 8]
等价于以下语句:
TestList = []
for i in range(10):
if i % 2 == 0:
TestList.append(i)
print(TestList)
2.2.3、一个表达式,后面为一个 for 子句,然后,跟着 for 子句。
直接上实例,一看就懂:
OldList = [[1, 2,