Nurkuję w Pythonie i mam pytanie dotyczące iteracji Foreach. Jestem nowy w Pythonie i mam pewne doświadczenie w C #. Zastanawiam się więc, czy w Pythonie jest jakaś równoważna funkcja do iteracji wszystkich elementów w mojej kolekcji, np
pets = ['cat', 'dog', 'fish']
marks = [ 5, 4, 3, 2, 1]
lub coś w tym stylu.
Odpowiedzi:
Pewnie. Pętla for.
źródło
for k,v in enumerate(pets):
itp.Lubię to:
W rzeczywistości Python ma tylko
for
pętle stylu foreach .źródło
Interesujące jest również to zaobserwować
Aby iterować po indeksach sekwencji, możesz połączyć
range()
i wykonaćlen()
następujące czynności:wynik
Edycja nr 1: Alternatywny sposób:
Podczas zapętlania sekwencji indeks pozycji i odpowiadająca jej wartość mogą być odczytane w tym samym czasie za pomocą
enumerate()
funkcji.wynik
źródło
Aby uzyskać zaktualizowaną odpowiedź, możesz łatwo zbudować
forEach
funkcję w Pythonie:Można również dostosować się do tego
map
,reduce
,filter
, oraz wszelkie inne funkcje tablicy z innych języków lub pierwszeństwa pan chciałby przynieść ponad. Pętle są wystarczająco szybkie, ale płyta kotła jest dłuższaforEach
lub inne funkcje. Możesz także rozszerzyć listę, aby mieć te funkcje za pomocą lokalnego wskaźnika do klasy, abyś mógł wywoływać je również bezpośrednio na listach.źródło
Chociaż powyższe odpowiedzi są poprawne, jeśli wykonujesz iterację nad dykcie {klucz: wartość}, jest to podejście, które lubię stosować:
Dlatego gdybym chciał zrobić coś takiego jak strifyfikowanie wszystkich kluczy i wartości w moim słowniku, zrobiłbym to:
Pozwala to uniknąć problemów z mutacją podczas stosowania tego typu iteracji, które mogą powodować nieprawidłowe zachowanie (czasami) z mojego doświadczenia.
źródło
copy
słownikiem, abyś mógł manipulować słownikiem podczas iteracji (chociaż twoja kopia będziefor key, value in Dictionary.copy().items()
Dla dict możemy użyć dla pętli do iterację
index
,key
avalue
:źródło