Используя цикл for, как мне получить доступ к индексу цикла, в данном случае от 1 до 5?
Используйте enumerate для получения индекса с элементом по мере выполнения итерации:
for index, item inenumerate(items): print(index, item)
И обратите внимание, что индексы Python начинаются с нуля, поэтому вы получите от 0 до 4 с приведенным выше значением. Если вам нужно количество от 1 до 5, сделайте это:
count = 0# in case items is empty and you need it after the loop for count, item inenumerate(items, start=1): print(count, item)
Одноуровневый поток управления
То, что вы запрашиваете, является питоновским эквивалентом следующего, который является алгоритмом, который использовали бы большинство программистов языков более низкого уровня:
index = 0# Python's indexing starts at zero for item in items: # Python's for loops are a "for each" loop print(index, item) index += 1
Или в языках, в которых нет цикла for-each:
index = 0 while index < len(items): print(index, items[index]) index += 1
или иногда чаще (но однотипно) встречается в Python:
for index inrange(len(items)): print(index, items[index])
Используйте функцию Enumerate
enumerate Функция Python уменьшает визуальный беспорядок, скрывая учет индексов и инкапсулируя итерируемый объект в другой итерируемый объект (enumerate объект), который выдает кортеж из двух элементов, состоящий из индекса и элемента, который предоставил бы исходный итерируемый объект. Это выглядит примерно так:
for index, item inenumerate(items, start=0): # default is zero print(index, item)
Этот пример кода довольно хорошо является каноническим примером разницы между кодом, который является идиоматичным для Python, и кодом, который таковым не является. Идиоматический код сложен (но не усложнен) Python, написанный так, как он был предназначен для использования. Разработчики языка ожидают, что идиоматический код будет не только более читабельным, но и более эффективным.
Получение количества
Даже если вам не нужны индексы по ходу работы, но вам нужно количество итераций (иногда желательно), вы можете начать с 1, и конечное число будет вашим количеством.
count = 0# in case items is empty for count, item inenumerate(items, start=1): # default is zero print(item)
print('there were {0} items printed'.format(count))
Количество, похоже, больше того, что вы намеревались запросить (в отличие от индекса), когда вы сказали, что хотите от 1 до 5.
Расшифровка - пошаговое объяснение
Чтобы разбить эти примеры, предположим, у нас есть список элементов, которые мы хотим повторить с индексом:
items = ['a', 'b', 'c', 'd', 'e']
Теперь мы передаем эту итерацию enumerate , создавая объект enumerate:
enumerate_object = enumerate(items) # the enumerate object
Мы можем извлечь первый элемент из этой итерации, который мы получили бы в цикле с помощью next функции:
iteration = next(enumerate_object) # first iteration from enumerate print(iteration)
И мы видим, что получаем кортеж из 0, первого индекса, и 'a', первого элемента:
и когда мы проверяем index, мы обнаруживаем, что это относится к первому индексу, 0, и item относится к первому элементу, 'a'.
>>> print(index) 0 >>> print(item) a
Заключение
Индексы Python начинаются с нуля
Чтобы получить эти индексы из итерируемого объекта по мере его повторения, используйте функцию enumerate
Использование enumerate идиоматическим способом (наряду с распаковкой кортежей) создает код, который более удобочитаем и обслуживаем:
Итак, сделайте это:
for index, item inenumerate(items, start=0): # Python indexes start at zero print(index, item)
Ответ 3
Запустить его довольно просто с 1 другого, чем 0:
for index, item inenumerate(iterable, start=1): print index, item # Used to print in python<3.x print(index, item) # Migrate to print() after 3.x+
Ответ 4
Протестировано на Python 3.12
Вот двенадцать примеров того, как вы можете получить доступ к индексам с соответствующими элементами массива, используя циклы for, циклы while и некоторые функции зацикливания. Обратите внимание, что индексы массива по умолчанию всегда начинаются с нуля (см. example 4, как это изменить).
1. Создание элементов цикла с помощью счетчика и += оператора.
items = [8, 23, 45, 12, 78] counter = 0
for value in items: print(counter, value) counter += 1
Result:
# 0 8 # 1 23 # 2 45 # 3 12 # 4 78
2. Повторение элементов с помощью enumerate() встроенной функции.