Python foreach эквивалент

192

Я погружаюсь в Python, и у меня есть вопрос об итерации foreach. Я новичок в Python, и у меня есть некоторый опыт в C #. Поэтому мне интересно, есть ли в Python эквивалентная функция для итерации по всем элементам в моей коллекции, например

pets = ['cat', 'dog', 'fish']
marks = [ 5, 4, 3, 2, 1]

или что-то вроде этого.

Билл
источник
2
Возможный дубликат Есть ли функция «foreach» в Python 3?
Стефан Вайнхолд,

Ответы:

295

Конечно. А для цикла.

for f in pets:
    print f
Ханну
источник
А что если я тоже должен знать индекс / ключ?
подсвечник
25
Тогда вы будете использовать перечислять. for k,v in enumerate(pets): и т.д.
Ханну
30

Как это:

for pet in pets :
  print(pet)

На самом деле, в Python есть толькоfor циклы стиля foreach .

Джек Эйдли
источник
12

Также интересно наблюдать за этим

Чтобы перебрать индексы последовательности, вы можете комбинировать range()и len()следующим образом:

a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
  print(i, a[i])

вывод

0 Mary
1 had
2 a
3 little
4 lamb

Редактировать # 1: Альтернативный способ:

При циклическом выполнении последовательности индекс позиции и соответствующее значение могут быть получены одновременно с помощью enumerate()функции.

for i, v in enumerate(['tic', 'tac', 'toe']):
  print(i, v)

вывод

0 tic
1 tac
2 toe
Кришна
источник
4

Для получения обновленного ответа вы можете легко построить forEachфункцию в Python:

def forEach(list, function):
    for i, v in enumerate(list):
        function(v, i, list)

Вы можете также приспособить это map, reduce, filter, и любые другие функции массива из других языков или старшинств вы хотите переубедить. Ибо петли достаточно быстрые, но котельная плита длиннее forEachили других функций. Вы также можете расширить список, чтобы иметь эти функции с локальным указателем на класс, чтобы вы могли вызывать их непосредственно в списках.

Роберт Меннелл
источник
1
Можете ли вы включить использование, пожалуйста?
ScottyBlades
3

Хотя приведенные выше ответы верны, если вы перебираете dict {key: value}, то этот подход мне нравится использовать:

for key, value in Dictionary.items():
    print(key, value)

Поэтому, если бы я хотел сделать что-то вроде строкового преобразования всех ключей и значений в моем словаре, я бы сделал это:

stringified_dictionary = {}
for key, value in Dictionary.items():
    stringified_dictionary.update({str(key): str(value)})
return stringified_dictionary

Это позволяет избежать каких-либо проблем с мутациями при применении этого типа итерации, что может вызвать ошибочное поведение (иногда) в моем опыте.

Марк Тане
источник
Более читаемой альтернативой этому является copyитерация по словарю, так что вы можете манипулировать словарем во время итерации (хотя ваша копия будет иметь все ключи и значения до любой модификации) - какfor key, value in Dictionary.copy().items()
Marc Maxmeister
1

Для Словаря мы можем использовать цикл для перебора index, keyи value:

dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
     ## Code here ##
Армаан Салам
источник