1. 列表推导式和生成器推导式 简单理解
列表推导式占用内存,可以重复利用
生成器推导式节省内存,但不可重复利用
“列表推导式”和“生成器表达式”的区别
1. 列表推导式的创建及使用
用方括号 [ ] 包含内容,里面利用for循环和相应的函数生成相应序列
# 单循环
example_01 = [x * 2 for x in range(10)] # 创建列表推导式
print(example_01)
1
2
3
输出:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
1
# 双循环
example_02 = [(i,j) for i in range(3) for j in range(5)] # 创建列表推导式
print(example_02)
1
2
3
输出:[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (2, 0), (2, 1), (2, 2), (2, 3), (2, 4)]
1
2. 生成器表达式的创建及使用
除了有一种称之为 “惰性计算” 的特点以外,生成器表达式和列表推导式的用法基本一致,只不过是把一对中括号 [ ] 变换为一对小括号 ( ) 。
example_03 = (x * 2 for x in range(10) if x % 2 == 1) # 创建生成器表达式
print(example_03) # 实际调用生成器时代码并不会立即执行
1
2
输出:<generator object <genexpr> at 0x000001AACF7D3CF0>
1