Как получить индекс списка и элемент одновременно в 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