针对特定迭代限制Python中的循环

时间:2014-03-07 07:55:44

标签: python

此列表,

l=[i for i in range(1,100)]

如何限制只打印前20个元素。

我想做的是,

>>> counter=0
>>> for index , i in enumerate(l):
...    if counter==20:
...        break
...    print index , i
...    counter+=1
...

是否有其他方法可以在不使用counter变量的情况下执行此操作?

2 个答案:

答案 0 :(得分:4)

使用切片列表,例如

l=[i for i in range(1,100)]
for index, i in enumerate(l[:20]):
    print index, i

或者您可以使用itertools.islice,以避免生成整个列表,而是根据需要迭代xrange,就像这样

from itertools import islice
for index, i in enumerate(islice(xrange(1, 100), 20)):
    print index, i

答案 1 :(得分:1)

Nishant N.的回答可能是最好的。但是,如果您将if语句更改为

,那么您的代码也会有效
if i == 20:

万一你想知道为什么它不起作用(你也需要在你发布的代码之前将counter设置为0,但我接受可能只是省略了。