Skip to main content
 首页 » 编程设计

python之如何在 python 中以更有效的方式重写这个循环

2025年05月04日11youxin

我有以下类型的循环:

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 语句的生成器函数。