如何在Python中完全循环N次?

时间:2013-10-16 05:23:48

标签: python loops

例如,我需要通过调用readline 10次来读取文件。

with open("input") as input_file:
    for i in range(10):
        line = input_file.readline()
        # Process the line here

这是一种使用range来控制循环次数的常用技巧。唯一的缺点是:有一个未使用的i变量。

这是我从Python中获得的最好的吗?有更好的想法吗?

P.S。在Ruby中我们可以做到:

3.times do
  puts "This will be printed 3 times"
end

这是优雅的,非常清楚地表达了意图。

4 个答案:

答案 0 :(得分:10)

这几乎是循环特定次数的最佳选择。

一个常见的习语是改为for _ in ...,将_表示为一种占位符。

答案 1 :(得分:5)

使用islice

中的itertools
from itertools import islice
with open("input", 'r') as input_file:
    for line in islice(input_file, 10):
        #process line

由于您可以直接迭代文件行,因此无需调用input_file.readline() 请参阅itertools.islice

的文档

答案 2 :(得分:1)

python中没有等效的构造。

(顺便说一句,即使在Ruby示例中,仍然需要一个计数器!语言只是隐藏它。解释器也可能生成字节码,这些行重复多次,而不是循环,但这不太可能。)

答案 3 :(得分:0)

您提供的解决方案几乎是最好的解决方案。

但是,如果您真的想要,可以使用生成器和iterslice将其抽象出来,这样您就不需要查看未使用的变量了:

import itertools

def take(iterable, amount):
    return itertools.islice(iterable, 0, amount)

with open("inputfile.txt") as file:
    for line in take(file.readlines(), 3):
        print line