Как получить индекс списка и элемент одновременно в Python?

Я часто пишу код так:

k = 0
for i in mylist:
    # y[k] = some function of i
    k += 1

Вместо этого я мог сделать

for k in range(K):
    # y[k] = some function of mylist[k]

но это не похоже на "pythonic". (Вы знаете... индексирование. Ick!) Есть ли какой-то синтаксис, который позволяет мне одновременно извлекать как индекс (k), так и элемент (i) с использованием либо цикла, либо понимания списка, либо генератора? Задача заключается в научных вычислениях, поэтому в теле цикла много чего, что делает понимание списка, вероятно, недостаточно мощным, я думаю.

Я также приветствую советы по связанным понятиям, которые, возможно, даже не были. Спасибо.

Ответы

Ответ 1

Вы можете использовать enumerate:

for k,i in enumerate(mylist):
    #do something with index k
    #do something with element i

Подробнее о методах петли.

Edit:
Как указано в комментариях, использование других имен переменных, таких как

for i, item in enumerate(mylist):

упрощает чтение и понимание вашего кода в долгосрочной перспективе. Как правило, для описания элементов списка следует использовать i, j, k для чисел и значащие имена переменных. То есть если у вас есть, например, список книг и перебрать его, тогда вы должны указать переменную book.

Ответ 2

enumerate - это ответ:

for index, element in enumerate(iterable):
    #work with index and element