0

如何制作循环:

for i, line in enumerate(lines_f1, start = 0):

从 1 (i = 1) 开始计数,并在每次迭代中递增 2?

4

4 回答 4

2

只需使用常规枚举(0、1、2、3 等),并使用它来计算您想要的数字:

>>> lines_f1 = ['line1', 'line2', 'line3', 'line4', 'line5']
>>> for i, line in enumerate(lines_f1, start = 0):
...     i = 1 + i*2
...     print i, line
...
1 line1
3 line2
5 line3
7 line4
9 line5
于 2013-08-13T14:44:40.970 回答
1

好吧,如果你想从 1 开始,从 1 开始:

enumerate(lines_f1, start = 1)

如果你想跳过每隔一行:

import itertools
for i,l in itertools.islice(enumerate(lines_f1, start = 1),0,None,2):
    pass #whatever you want here

如果您只想i在 ieach 迭代中用两次编号,只需乘以:

for i,l in enumerate(lines_f1, start = 1):
    linenum = 2*i
于 2013-08-13T14:49:53.663 回答
0

不确定您想要的输出是什么,但是:

lines_f1 = ["a",'b','c','d','e','f']  
print range(1,len(lines_f1),2), lines_f1[1::2]

产量:

 [1,3,5] ['b','d','f']
于 2013-08-13T14:41:57.490 回答
0

使用itertools函数来避免构建不必要的单独列表。

当您说要“增加 2”时,不清楚您是要跳过行还是仅 increment i。如果您想跳过行,请使用 Marcin 的答案。否则,请尝试:

for i, line in itertools.izip(itertools.count(1, 2), lines_f1):
于 2013-08-13T14:54:49.447 回答