Pętla For w Pythonie ma kilka innych funkcji niż inne języki programowania. Zostawiam ci to, czego się uczę, aby jak najlepiej wykorzystać jedną z najczęściej używanych pętli.
W Pythonie jest to przeznaczone do iteracji przez obiekt iterowalny, czy to lista, obiekt, czy inny element.
Następująca struktura jest
h2=[ 'Valencia', 'Castellón', 'Alicante'] for j in h2: instructions
Tutaj h2 jest elementem iterowalnym, na przykład lista h2=[ 'Valencia', 'Castellón', 'Alicante']. Pętla będzie miała 3 iteracje, w pierwszej j=Valencia, w drugiej zmienna j=Castellón.
Dzięki temu możemy zdefiniować instrukcje, które chcemy, zawsze pamiętając o wcięciach, co jest istotne w Pythonie i co wiele osób ignoruje, otrzymując błędy w kodzie.
Wykonaj iterację pętli for dokładnie określoną liczbę razy.
Jeśli chcemy, aby powtórzył się określoną liczbę razy, tak jak w C++, będziemy musieli użyć funkcji range(). Aby powtórzyć 10 razy, użyjemy a
for element in Range(9): instructions
Wstawiamy 9, a nie 10, ponieważ Range zaczyna się od 0, więc od 0 do 9 jest 10 iteracji lub zwojów pętli.
Znajomość Range() pozwala nam, zamiast wpisywać liczbę do środka, umieścić zmienną, dzięki której będziemy mieć znacznie większą kontrolę.
var = 10 for element in Range(var): instructions
Funkcja Range ma wiele opcji, o czym opowiem w innym poście, aby nie mieszać treści i jak najbardziej ją rozwijać.
Można zrobić znacznie więcej, aby kontrolować przepływ pętli for.
Przerwij i kontynuuj wypowiedzi
Istnieją dwie bardzo przydatne funkcje, które pozwalają nam uczynić pętlę for bardzo funkcjonalną, zarówno w przypadku przerwy, jak i kontynuowania. Zwykle są używane z warunkami warunkowymi, jeśli sprawdzają, czy coś jest prawdziwe.
Działają w innych pętlach i jest jeszcze inna interesująca instrukcja, którą jest pass, która jest instrukcją, która jest wykonywana, ale nic nie robi i jest idealna, gdy chcemy zdefiniować strukturę, która wymaga poleceń, ale chcemy je później umieścić (komentarze są nieprzydatne do tego)
przerwa
Z przerwą możemy w każdej chwili wyjść z pętli. Jak sobie wyobrażasz bardzo przydatne. Prawdą jest, że istnieją inne struktury, takie jak While,
numeros = [1, 2, 4, 3, 5, 8, 6] for n in numeros: if n == 3: break else: print('No se encontró el número 3')
KONTUNUUJ
Sprawia, że przechodzimy do kolejnego elementu w pętli.
numeros = [1, 2, 4, 3, 5, 8, 6] for n in numeros: if n == 3: continue else: print('No se encontró el número 3')
https://j2logo.com/bucle-for-en-python/
Dla… jeszcze
Istnieje struktura wywodząca się z For, która oznacza … else
datos = [1, 2, 3, 4, 5] for n in datos: if n == 2: break else: print('No hay 2')
Ta struktura powstała po tym, jak zobaczyli, że jest to konieczne i że wiele osób korzystało z alternatywnych sposobów, aby to osiągnąć. W ten sposób pomagają ludziom i uzyskują bardziej czytelny kod
dla _ w iterowalnym
Widziałem to w niektórych programach, chociaż nigdy z niego nie korzystałem.
Kiedy iterujemy obiekt, listę, słownik itp., ale zawartość tych elementów nas nie interesuje, możemy to wskazać za pomocą _
Przykład:
Chcemy policzyć elementy listy, ale nie obchodzi nas, co ona zawiera, zależy nam tylko na jej długości.
h2=[ 'Valencia', 'Castellón', 'Alicante'] count = 0 for _ in h2: cont += 1
W wielu witrynach zalecają, aby nie nadużywać tej praktyki. Naprawdę nie wiem jakie to ma zalety, czy jest szybsze?
Jest zalecany na kursie Wprowadzenie do Pythona na Harvardzie. Kiedy iterujemy po zmiennej, ale nie zamierzamy jej w ogóle używać, umieszczamy undescore, to jest tak, jak tam komentują Pythonic, praktyka Pythona, której nie widać w innych językach, poprawia czytelność, ponieważ nie musi być świadomy, do czego służy.
pętla do tyłu
wstecz dla pętli. Iterować od końca do początku
Używa funkcji reversed() wprowadzonej w Pythonie 3
h2=[ 'Valencia', 'Castellón', 'Alicante'] for j in reversed(h2): print (j)
Pętla z dwoma indeksami, wartością iterowalności i indeksem
Dzięki enumerate() możemy pracować z indeksami kolekcji. Ponieważ wielokrotnie, oprócz wartości samego obiektu iterowalnego, interesuje nas jego indeks.
h2=[ 'Valencia', 'Castellón', 'Alicante'] for j, h in enumerate(h2): print j, '-->', h2[i]
Iteracja na 2 listach
Kolejną bardzo ciekawą opcją jest zip(), która ułatwi nam pracę oraz sprawi, że nasz kod będzie prostszy i bardziej czytelny.
h2=[ 'Valencia', 'Castellón', 'Alicante'] cod=[100, 200, 300] for j, h in zip(h2, cod): print h2, '-->', cod
W Pythonie 2.x izip() został użyty do ulepszenia tej funkcji, ale w Pythonie 3 izip to zip()
Zapętlanie w posortowanej kolejności
Iteruj w kolejności według wartości obiektu zamiast według jego indeksu. używane jest sortowane()
colors = ['rojo', 'amarillo', 'verde'] for color in sorted(colors): print color
A jeśli chcemy to zrobić na odwrót
colors = ['rojo', 'amarillo', 'verde'] for color in sorted(colors, reverse=True): print color
Niestandardowa kolejność sortowania
colors = ['rojo', 'amarillo', 'verde'] for color in sorted(colors, key=len): print color
Wartość Sentinel w pętli for
Wartość sentinel to wartość, która powoduje zakończenie pętli. Zwykle jest prezentowany w pętli while, ale Raymond Hettinger pokazuje nam, jak go używać z for, co jest szybsze
blocks = [] for block in iter(partial(f.read, 32), ''): blocks.append(block) print (block)
Słowniki przemierzaj za pomocą for
Słowniki są niezbędnymi narzędziami do wyrażania relacji i tworzenia grup.
Możesz przeglądać słownik w tradycyjny sposób z for, ale to nie zwróci wszystkich informacji, nie będziemy mogli pracować z takimi wartościami i indeksami, jeśli nie zaczniemy dodawać liczników i innych elementów.
d = {'casa': 'azul', 'coche': 'rojo', 'hombre': 'verde'} for k in d.keys(): if k.startswith('r'): del d[k]
W ten sposób, oprócz oglądania elementów, możemy modyfikować słownik, zmieniając elementy lub usuwając je, jednocześnie iterując pętlę for.
d.keys() wywołuje argumenty i tworzy kopię, którą przechowuje na liście, którą możemy modyfikować.
Aby uzyskać indeksy i wartości zamiast czegoś tradycyjnego i to jest pierwsza rzecz, jaka przychodzi do głowy tym z nas, którzy zaczynają programować
for k in d: print k, '-->', d[k]
Skorzystamy z tej znacznie szybszej opcji
for k, v in d.items(): print k, '-->', v
iteritems() niż itemy()
Porozmawiaj o pętlach w Pythonie Raymonda Hettingera
Jest to stary, ale bardzo ilustracyjny film, w którym w pierwszych 20 minutach Raymond Hettinger uczy nas różnych możliwości pętli w Pythonie i podaje przykłady tego, jak przekształcają one powszechnie używane przez ludzi struktury w funkcje, aby pętla była bardziej czytelna i prostsza kod.