Python 越来越多的功能变成了“惰性可执行文件”,比如生成器
表达式和其他类型的迭代器。
然而,有时,我发现自己想要滚动一个单行“for”循环,只是为了执行一些操作。
让循环实际执行的最Pythonic的事情是什么?
例如:
a = open("numbers.txt", "w")
(a.write ("%d " % i) for i in xrange(100))
a.close()
不是实际的代码,但你明白我的意思。相反,如果我使用列表生成器,则会产生创建一个充满“None”的 N 长度列表的副作用。
目前我所做的是使用表达式作为调用“any”或“all”的参数。但我想找到一种不依赖于循环中执行的表达式的结果的方法 - “任何”和“全部”都可以根据评估的表达式而停止。
需要明确的是,这些是我已经知道的方法,每种方法都有其缺点:
[a.write ("%d " % i) for i in xrange(100))]
any((a.write ("%d " % i) for i in xrange(100)))
for item in (a.write ("%d " % i) for i in xrange(100)): pass
有一种明显的方法可以做到这一点,这就是您应该这样做的方式。没有理由以聪明的方式做到这一点。
a = open("numbers.txt", "w")
for i in xrange(100):
a.write("%d " % i)
d.close()
延迟执行给您带来了一个巨大的好处:它允许您将一个序列传递给另一段代码,而不必将整个内容保存在内存中。它用于创建高效的序列作为数据类型。
在这种情况下,您不希望延迟执行。你想要执行力。你可以……执行。与一个for
loop.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)