pythonic的方式做了N次没有索引variables?
我每天都爱python,越来越多。
今天,我正在写一些代码,如:
for i in xrange(N): do_something()
我不得不做了N次。 但是每次都不依赖于i
的值(索引variables)。 我意识到,我正在创build一个我从来没有使用过的variables( i
),而且我认为“在没有这个无用的索引variables的情况下,确实有更多的pythonic方法。
所以…问题是:你是否知道如何以更多(pythonic)美丽的方式来完成这个简单的任务?
比在xrange(N)
上循环更快的方法是:
import itertools for _ in itertools.repeat(None, N): do_something()
使用_variables,正如我在问这个问题时所学到的,例如:
# A long way to do integer exponentiation num = 2 power = 3 product = 1 for _ in xrange(power): product *= num print product
我只是for _ in range(n)
使用for _ in range(n)
,这是直截了当的。 它将在Python 2中生成大量的整个列表,但是如果你使用的是Python 3,这不是问题。
既然function是一等公民,你可以写小包装(来自Alex的答案)
def repeat(f, N): for _ in itertools.repeat(None, N): f()
那么你可以传递函数作为参数。
_和x是一样的东西。 然而,这是一个Python的习惯用来表示你不打算使用的标识符。 在python中,这些标识符不会像其他语言中的variables那样需要记忆或分配空间。 忘记这一点很容易。 它们只是指向对象的名字,在这种情况下,每个迭代都是一个整数。
假设你已经将do_something定义为一个函数,并且你想执行它N次。 也许你可以试试以下内容:
todos = [do_something] * N for doit in todos: doit()
那么简单的while循环呢?
while times > 0: do_something() times -= 1
你已经有了variables; 为什么不使用它?