推导式:
python特有,帮助用者在某些场合写出比较精简的代码。有四种
列表推导式
alist = [x*2 for x in range(1,10)]
字典推导式
dic = {x:x**2 for x in range(1,7)if x% 2 == 0}
集合推导式
元组推导式
生成器:
由于序列或者集合内的元素的个数非常大,如果全部制造写入内存,对计算机来说是一种挑战,占满计算机内存,因此需要一种特殊的迭代器——生成器,一边循环一边计算出元素的机制。
生成器优势:
自动实现“迭代器协议(iter和next)”,不必手动实现
**创建方式**:
1、生成器推导式(一般不用,实际意义不大)
例如:
a=(x for x in range(10))
print(a)
结果:
<generator object <genexpr> at 0x000001E28D514430>
2、for循环,yield关键字
def fun():
for a in range(1,20):
yield a*a
r = fun()
print(next(r))
print(next(r))
print(next(r))
print(next(r))
def yieldTest():
i = 0
while i < 3:
temp = yield i
print(temp)
i += 1
obj = yieldTest()
v1 = next(obj)
print(v1)
v2 = next(obj)
print(v2)
输出:
1
4
9
16
0
None
1
Process finished with exit code 0