-
python列表生成式:
info = [1,2,3,4,5]
b = []
# 枚举方法
for index, value in enumerate(info):
info[index] += 1
print info
# map + lambda
a = map(lambda x:x+1, info)
print a
for i in a:
print I
# 列表生成式
a = [x+1 for x in info]
print a
-
python 生成器:
列表生成式会创建一个列表,占用内存空间。
生成器会在循环的过程中不断推算出后续的元素,不必创建完整的list,从而节省大量的空间,生成器中存储的是算法,一次只生成一个值。占用少量的内存空间。
生成器函数:
1. 每次调用next方法执行函数生成一个值
2.遇到yield语句返回一个结果,阻塞(每次执行yield,在迭代器函数中中断执行,并返回迭代器当前值)
3.再次执行迭代器函数、next方法,从上次yield语句返回处继续执行
生成器表达式:
返回一个对象,这个对象只有在需要的时候才产生结果
生成器表达式来源于迭代和列表解析的组合,生成器和列表解析类似,但是它使用尖括号而不是方括号
>>> # 列表解析生成列表
>>> [ x ** 3 for x in range(5)]
[0, 1, 8, 27, 64]
>>>
>>> # 生成器表达式
>>> (x ** 3 for x in range(5))
<generator object <genexpr> at 0x000000000315F678>
>>> # 两者之间转换
>>> list(x ** 3 for x in range(5))
[0, 1, 8, 27, 64]