Я написал код, который использует перечисление для циклического перебора по списку.python продолжает цикл из определенного индекса
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 –
Кстати: я понял, что есть немного запаха кода, что вы здесь делаете. Вам не нужно «перечислять», потому что это означает, что вы изменяете элементы списка и устанавливаете их на место. Если вы имеете дело со списком статически, вам не нужно вообще управлять индексами и просто перебирать фрагменты. – kojiro