学习学习
Topic source当然不是 for循环的list 在第二行那里是空 因为是range(len(L) - 1) 等价于 range(len([1]) - 1) 等价于 range(0) 得到的是 [] 遍历就进不去 所以只有头尾的 [1] + [1]
谢谢,再问一下。 print出来的,是对yield出来的L的迭代么? 为什么输出的格式是[1,2,1]这样的,不是 1 2 1 感觉对python内部机制完全是不理解。。。。。 L=[1]+生成式+[1],出来的肯定还是list 然后yield L,就变成了generator object? 如果这个对象其实是个list,迭代它,输出的就是list?
L = [1]
while True:
yield L
L.append(0)
L = [L[i - 1] + L[i] for i in range(len(L))]
这样写哪里错了?
@红莲爆雷刃
当函数中使用了yield之后,函数就成了生成器,可用于迭代;
for t in 生成器(): 这里的生成器本身就是可迭代对象,
你可以把它想象成是list,没错你现在迭代的就是list,
每一次迭代都调用了一次next(),取得yield返回的值,并将这个值赋值给t,
你不能因为返回的是list就觉得应该再遍历一次list,这是错误的想法!
另外,[1] + [0] 的结果就是 [1, 0] 这样合并后的效果,
这是py中很方便的地方,
php得用array_merge([1], [0])才能做到合并,js中需要 [1].concat([0]) 这样的操作
- 1
- 2
帘外雨潺潺233