我有以下类型的循环:
a = range(10)
b = [something]
for i in range(len(a)-1):
b.append(someFunction(b[-1], a[i], a[i+1]))
然而,for 循环正在扼杀大量的性能。我已经尝试编写一个 Windows 生成器来每次都给我 2 个元素,但它最后仍然需要显式的 for 循环。有没有办法以 Python 的方式使它更短、更高效?
谢谢
编辑:我忘记了 b.. 中的元素。对不起大家。但是,我以前的问题的解决方案对我遇到的其他问题也很有帮助。谢谢。
请您参考如下方法:
考虑一下
def make_b( a, seed ):
yield seed
for a,b in zip( a[:-1], a[1:] ):
seed= someFunction( seed, a, b )
yield seed
这让你可以这样做
a = xrange(10)
b= list(make_b(a,something))
注意你可以经常使用这个:
b = make_b(a)
而不是实际创建 b 作为列表。 b 作为生成器函数可为您节省大量存储空间(和一些时间),因为您可能一开始并不真正需要 list 对象。通常,您只需要一些可迭代的东西。
a 类似。它不必是一个 list,只是一些可迭代的东西——比如带有 yield 语句的生成器函数。
