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; 为什么不使用它?