For Loops w Pythonie: wszystko, co musisz wiedzieć

Opublikowany: 2022-08-18

Ten samouczek nauczy Cię wszystkiego o używaniu pętli for w Pythonie z przykładami kodu.

W programowaniu pętle pomagają powtórzyć określony zestaw instrukcji. Użyjesz for pętli do określonych iteracji, gdy:

  • wiesz, że będziesz pracować z sekwencją o skończonej liczbie elementów
  • widzisz wcześniej liczbę powtórzeń

Ten samouczek nauczy Cię wszystkiego o pracy z pętlami for w Pythonie. Zaczniesz od nauki składni i prostych iteracji przy użyciu pętli for. Następnie dowiesz się o przetwarzaniu argumentów wiersza poleceń, używaniu instrukcji sterujących pętli i nie tylko.

Zacznijmy…

Składnia Pythona dla pętli

Składnia Pythona dla pętli

Ogólna składnia używania pętli for w Pythonie jest następująca:

 for item in iterable: # do something on item statement_1 statement_2 . . . statement_n

W powyższej składni:

  • item jest zmienną zapętloną.
  • iterable oznacza każdą iterację Pythona, taką jak listy, krotki i łańcuchy.
  • instrukcja_1 do instrukcja_n oznaczają instrukcje w treści pętli.

Uwaga : Pamiętaj, aby dodać dwukropek ( : ) po nazwie iterowalnego i wciąć wszystkie instrukcje w treści pętli o cztery spacje.

Wspólne dla konstrukcji pętli w Pythonie

dla konstrukcji pętli

Podczas korzystania z pętli for :

  • Możesz uzyskać dostęp do elementów bezpośrednio, korzystając ze składni omówionej w poprzedniej sekcji.
  • Możesz użyć pętli for w połączeniu z wbudowanymi funkcjami Pythona, takimi jak range() i enumerate() .

Omówimy je w tej sekcji.

Używanie pętli for do uzyskiwania dostępu do elementów

Aby poprawić czytelność, powinieneś wybrać zapętloną zmienną wskazującą, co zawiera lista. Na przykład w poniższym przykładzie nums to lista liczb, których num jako zmiennej pętli. Zauważ, że for num in nums: jest intuicyjne i łatwe do odczytania.

 nums = [4,5,9,1,3] for num in nums: print(num) # Output 4 5 9 1 3

Dodając jeszcze kilka przykładów, możesz użyć for fruit in fruits: i for student in students: podczas przeglądania odpowiednio fruits i listy students .

Używanie for Loop z funkcją range()

Jeśli chcesz uzyskać dostęp do elementu listy poprzez jego indeks, możesz użyć funkcji range() .

W Pythonie range(start, stop, step) zwraca obiekt zakresu, przez który można przejść w pętli, aby uzyskać indeksy: start , start + step i tak dalej, aż do stop , ale nie w tym.

 for i in range(len(nums)): print(nums[i]) # Output 4 5 9 1 3

Możesz również użyć funkcji range() , aby wygenerować sekwencję liczb, przez którą przejdziesz w pętli. W poniższym przykładzie ustawiamy opcjonalny parametr step na 2. Tak więc otrzymujemy liczby od 10 do, ale bez 20, w krokach po 2.

 for i in range(10,20,2): print(i) # Output 10 12 14 16 18

Używanie for Loop z funkcją enumerate()

Jeśli chcesz przejść przez iterację i jednocześnie uzyskać dostęp do elementów i ich indeksów, możesz użyć funkcji enumerate().

Oto przykład.

 for idx, num in enumerate(nums): print(f"{idx}:{num}") # Output 0:4 1:5 2:9 3:1 4:3
python-for-loop

Jak czytać elementy z list za pomocą pętli for w Pythonie?

Aby przejść przez listy Pythona za pomocą pętli for, możesz użyć ogólnej składni z poprzedniej sekcji.

W poniższym przykładzie nums jest iterowalną, a num jest zmienną zapętloną.

 nums = [4,5,9,1,3] for num in nums: print(f"{num} times 3 is {num*3}") # action on each num # Output 4 times 3 is 12 5 times 3 is 15 9 times 3 is 27 1 times 3 is 3 3 times 3 is 9

Jak zapętlić łańcuchy za pomocą pętli for w Pythonie?

Łańcuchy Pythona są iterowalne i możesz wykonywać pętle, indeksowanie, cięcie na plasterki i wiele więcej.

Uwaga : Python nie ma wbudowanego typu danych znakowych. Możesz więc traktować znak jako ciąg o długości jeden.

 my_string = "Code" for char in my_string: print(char) # Output C o d e

Jak zapętlić tablice za pomocą pętli for w Pythonie?

Zapętlaj tablice za pomocą pętli

Możesz przechodzić przez tablice za pomocą pętli i zagnieżdżać pętle.

W poniższym fragmencie kodu array1 to zagnieżdżona lista zawierająca mniejsze listy jako jej elementy. Tak więc pętla przez array1 daje każdy wiersz, jak pokazano poniżej.

 array1 = [[2,3],[7,8]] for row in array1: print(row) # Output [2, 3] [7, 8]

Aby uzyskać dostęp do poszczególnych elementów w każdym rzędzie, możesz użyć innej pętli for .

 array1 = [[2,3],[7,8]] for row in array1: for elt in row: print(elt)

W powyższej komórce kodu:

  • Zewnętrzna pętla for pomaga indeksować wiersze.
  • Wewnętrzna pętla for umożliwia dopasowanie elementów w każdym rzędzie.

Oto odpowiedni wynik.

 Output 2 3 7 8

Jak czytać argumenty wiersza poleceń za pomocą pętli?

Wiersz poleceń

Jako programista powinieneś swobodnie uruchamiać skrypty Pythona z wiersza poleceń i używać argumentów wiersza poleceń do interakcji ze skryptem.

Możesz użyć wbudowanych modułów Pythona, takich jak sys i argparse, aby analizować i odczytywać argumenty wiersza poleceń.

W tej sekcji omówimy, jak używać modułu sys i używać pętli for — do przechodzenia przez listę argumentów wiersza poleceń.

W module sys sys.argv jest listą argumentów wiersza poleceń, które przekazujesz. Możesz więc przechodzić przez sys.argv w taki sam sposób, w jaki przechodzisz przez dowolną listę Pythona.

 # main.py import sys for arg in sys.argv: print(arg)

Możesz teraz uruchomić program z wiersza poleceń, jak pokazano poniżej.

 $ python main.py Hello Python3 main.py Hello Python3

Domyślnie nazwa modułu jest pierwszym argumentem i ma indeks zero w sys.argv .

Jeśli chcesz uzyskać dostęp do indeksów i odpowiadających im argumentów, możesz użyć funkcji range() .

 # main.py import sys for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")

️ Następnie ponownie uruchom main.py.

 $ python main.py Hello Python3 arg0 is main.py arg1 is Hello arg2 is Python3

Załóżmy, że chcesz przeanalizować i przetworzyć argumenty inne niż nazwa modułu. Możesz ustawić wartość początkową na 1, jak w komórce kodu poniżej.

 # main.py import sys for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
 $ python main.py Hello Python3 arg1 is Hello arg2 is Python3
python-for-loop-args-command-line

Podsumowując, plik main.py zawiera następujący kod.

 # main.py import sys print("\nPrinting all command-line arguments...") for arg in sys.argv: print(arg) print("\nPrinting all command-line arguments with index...") for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}") print("\nPrinting command-line arguments except arg0: module_name...") for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")

Oto dane wyjściowe po uruchomieniu modułu.

 $ python main.py Hello Python3 Printing all command-line arguments... main.py Hello Python3 Printing all command-line arguments with index... arg0 is main.py arg1 is Hello arg2 is Python3 Printing command-line arguments except arg0: module_name... arg1 is Hello arg2 is Python3

Jak korzystać z instrukcji break Inside for Loop

break Komunikat Inside for Loop

Podobnie jak inne języki programowania, Python obsługuje również użycie instrukcji sterujących pętli break and continue . Te instrukcje mogą pomóc w zmianie przepływu sterowania w pętlach, w zależności od pewnych warunków. Zobaczmy, jak ich używać w pętli for.

Instrukcja break the może być użyta do wyjścia z pętli, gdy określony warunek jest True .

Chcemy napisać program, który wykona następujące czynności:

  • Fix k , liczba wejść.
  • Użyj pętli for , aby wczytać dane wejściowe użytkownika — jedną cyfrę na raz i zsumować liczby nieujemne (większe lub równe zero).
  • Ten proces powinien trwać tak długo, jak użytkownik wprowadzi liczby nieujemne.
  • Gdy użytkownik wprowadzi liczbę ujemną, wyjdź z pętli i wydrukuj sumę.

Oto kod, który wykonuje powyższe zadanie.

 k= 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: break # exit loop when num < 0 sum += num print(sum)

Jeśli użytkownik wprowadzi liczbę mniejszą od zera, formant przerywa pętlę for do pierwszej instrukcji po pętli.

 Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 10

Jak korzystać dalej Oświadczenie Inside for Loop

Instrukcja continue może służyć do pomijania pewnych iteracji w zależności od konkretnego warunku.

Użyjmy tych samych przykładów w poprzedniej sekcji.

  • Wczytaj dane wprowadzone przez użytkownika i oblicz sumę liczb nieujemnych.
  • Jeśli użytkownik wprowadzi liczbę ujemną, pomiń tę iterację, przejdź do następnej iteracji i wczytaj następną liczbę.
 k = 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: continue sum += num print(sum)

Oto przykładowe wyjście.

 Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 Enter a number: 3 13

Czwarta liczba to -1, która jest ujemna. Jednak tym razem pętla for trwa, dopóki nie osiągniemy określonej liczby wejść, i ignoruje wejścia ujemne. Zasadniczo zwraca sumę wszystkich liczb nieujemnych z k liczb wejściowych.

Czy w Pythonie można wpaść w nieskończoną pętlę?

Nieskończona pętla

We wszystkich przykładach i przypadkach użycia, które omówiliśmy do tej pory, nigdy nie napotkaliśmy problemu nieskończonej pętli for. Ale czy możemy mieć nieskończoną pętlę for w Pythonie?

Rozważmy następującą funkcję double() .

 def double(x = 1): return x*2
  • Gdy wywołujesz funkcję double() bez określenia wartości x , używana jest wartość domyślna 1 .
  • Gdy określasz wartość x w wywołaniu funkcji, ta wartość jest używana.
 double() # Returns: 2 double(20) # Returns: 40

W Pythonie funkcja iter() zwraca obiekt iteratora. Możesz użyć next(iter-obj) , aby przejść przez sekwencję i uzyskać dostęp do kolejnych elementów.

– Rozważ obiekt wywoływalny i wartość, sentinel .

iter(callable-object, sentinel) może służyć do wykonywania iteracji, aż wartość zwracana z callable-object będzie równa sentinel .

Czy widzisz, dlaczego w tym przypadku możemy mieć nieskończoną pętlę for?

python-dla-nieskończonej-pętli

Cóż, masz obiekt callable-object i wartość sentinel . Jeśli wartość zwracana z wywołania nigdy nie jest równa wartości wartowniczej, pętla trwa w nieskończoność!

Użyjmy powyższej funkcji double jako wywoływalnej i ustawmy wartość sentinel na 0.

Uwaga : Podaj nazwę funkcji double , a nie wywołania funkcji double() .

Ponieważ wartość zwracana z funkcji double zawsze wynosi 2 i nigdy nie jest równa 0, mamy nieskończoną pętlę!

️ Spróbuj uruchomić następującą komórkę kodu. Pętla for jest nieskończona i będziesz musiał wymusić zatrzymanie programu.

 for _ in iter(double,0): print("Running...")
python-for-loop-nieskończony

Python For Loops: Ćwicz pytania

#1 . Użyj pętli for, aby wydrukować wszystkie liczby parzyste z zakresu od 0 do 20.

Podpowiedź : Użyj funkcji range() z poprawną wartością step .

#2 . Wydrukuj wszystkie liczby parzyste od 20 do 0.

Podpowiedź : Użyj wartości ujemnej dla parametru step w funkcji range() .

#3 . Utwórz trójwymiarową tablicę NumPy.

Wskazówka : Użyj pętli for i pętli for zagnieżdżonych w razie potrzeby, aby uzyskać dostęp do wierszy i poszczególnych wpisów w tablicy.

Wypróbuj przykłady

Zawijanie

Oto podsumowanie tego, czego nauczyłeś się w tym samouczku.

  • Składnia do używania pętli for Pythona wraz z funkcjami range() i enumerate()
  • Używanie pętli for do przeglądania list, tablic i łańcuchów oraz wczytywania argumentów wiersza poleceń
  • Korzystanie z instrukcji sterujących pętli: przerwanie , aby wyrwać się z pętli i instrukcja continue , aby pominąć pewne iteracje — na podstawie warunków — wewnątrz pętli for
  • Zrozumienie możliwości nieskończonych pętli for w Pythonie

Następnie dowiedz się, jak używać metody split() w Pythonie.