Я написал код, который использует enumerate для циклического просмотра списка.
for index, item in enumerate(list[start_idx:end_idx])
print('index [%d] item [%s]'%(str(index), item))
элемент в списке - это просто строки. Иногда я не хочу перечислять весь список, иногда я нарезаю список, делая разные вещи.
Часть, с которой у меня возникают проблемы, - это функция перечисления Python.
Документы говорят, что вы можете сделать:
for index, item in enumerate(list, start_index):
print(str(index))
приведенный выше код не делает то, что я ожидал. Хотя я перечислил бы начало в начальной позиции и остановился бы в конце, но это не так.
Я написал небольшую программу, и она действительно работает шатко.
>>> for i, x in enumerate(range(0,20),start=4):
... print(str(i)+'\t'+str(x))
...
4 0
5 1
6 2
7 3
8 4
9 5
10 6
11 7
12 8
13 9
14 10
15 11
16 12
17 13
18 14
19 15
20 16
21 17
22 18
23 19
Я ожидаю, что перечисление начнется с индекса 4 и зациклится до конца. Таким образом, он получит диапазон от 4 до 19, но кажется, что индекс только начинается, но все еще повторяется от 0 до 19..
Вопрос, есть ли способ сделать итерационный цикл, начинающийся с определенного индекса в python?
Мой ожидаемый результат будет
>>> for i, x in enumerate(range(0,20),start=4):
... print(str(i)+'\t'+str(x))
...
4 0 # skip
5 1 # until
6 2 # this
7 3 # item
8 4
9 5
10 6
11 7
12 8
13 9
14 10
15 11
16 12
17 13
18 14
19 15
20 16
21 17
22 18
23 19
вместо запуска индекса в начальной позиции укажите.
start
, я бы сказал, косметический. Обычно полезно, когда вы хотите начать отсчет с 1 вместо 0 по умолчанию. - person Moses Koledoye   schedule 11.10.2016enumerate
, потому что это подразумевает, что вы изменяете элементы списка и возвращаете их на место. Если вы работаете со списком статически, вам вообще не нужно управлять индексами, и вы можете просто перебирать срезы. - person kojiro   schedule 11.10.2016