生成列表长度的重复索引

时间:2018-07-07 20:28:08

标签: python

我知道我可以执行以下操作:

files = ['a', 'b', 'c', 'd', 'e', 'f']

for ind, file in enumerate(files):
    print(ind, file)

(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'e')
(5, 'f')

我想生成第二个索引,该索引在列表的长度上重复0到n-1之间。例如,如果n=2 print(ind, file, ind2)产生

(0, 'a', 0)
(1, 'b', 1)
(2, 'c', 0)
(3, 'd', 1)
(4, 'e', 0)
(5, 'f', 1)

,如果n=3

(0, 'a', 0)
(1, 'b', 1)
(2, 'c', 2)
(3, 'd', 0)
(4, 'e', 1)
(5, 'f', 2)

2 个答案:

答案 0 :(得分:4)

这与模运算符无关紧要:

for ind, file in enumerate(files):
    print(ind, file, ind % 3)

答案 1 :(得分:2)

您可以结合使用itertools.cyclezip

from itertools import cycle
files = ['a', 'b', 'c', 'd', 'e', 'f']
n = 3
print(list(zip(range(len(files)), files, cycle(range(n)))))

这将输出:

[(0, 'a', 0), (1, 'b', 1), (2, 'c', 2), (3, 'd', 0), (4, 'e', 1), (5, 'f', 2)]