在Python中,我可以用step counter和stop条件实现循环,这是循环的经典情况:
for i in range(50):
result = fun(i)
print(i, result)
if result == 0:
break
其中fun(x)
是从整数到整数的任意函数。
我一直怀疑这是否是对它进行编码的最佳方法(pythonical,以及在可读性和效率方面),或者是将它作为一个while循环运行更好:
i = 0
result = 1
while result != 0 and i < 50:
result = fun(i)
print(i, result)
i += 1
哪种方法更好?尤其是-我担心break
语句的使用,这感觉不对。
最好的方法是根本不显式循环。救援工具:
+比循环快得多
for
循环的性能略高于while
,因为^{+=
操作被解释,需要more operations和对象创建/销毁。您可以使用^{for
循环可以说是more Pythonic in the vast majority of cases when you wish to iterate over an iterable object。此外,引用Python wiki:“因为Python中的for循环非常强大,而除了在需要用户输入的情况下很少使用”。使用break
语句本身并没有什么不切实际的。可读性主要是主观的,我认为
for
循环也更具可读性,但这可能取决于您以前的编程背景和经验。表演上有细微的差别。由于while循环在每次迭代时都执行额外的布尔检查,因此速度稍微慢一些。
但是,对于您想要评估的大多数函数,有一种替代方法可以首先使用循环,这是一种更快的方法。请参阅下面的示例。我确信还有更优化的实现。。
但是,如果您想/必须使用循环,那么for循环通常是更为python的方式,如in this nice answer to a related question所述
编辑:Chris Rands在下面的回答从C代码的角度解释了这一点,并使用了一个更精确的计时模块(尽管在我强制这个例子的宏级别上,这并不重要)。也要读他的答案。
相关问题 更多 >
编程相关推荐