Pętla w Pythonie
Instrukcja pętli for w Pythonie sekwencyjnie iteruje po członkach dowolnego obiektu, listy, łańcucha itp. W porównaniu z innymi językami programowania jego składnia jest znacznie czystsza i nie wymaga ręcznego definiowania kroków iteracji i uruchamiania iteracji. Chociaż istnieją sposoby, aby jego zachowanie było takie samo jak inne języki programowania (nie zostaną omówione w tym artykule). Możesz także sprawować pewną kontrolę nad pętlami for, używając instrukcji takich jak continue, break, pass itp. Poniżej znajduje się prosty przykład pętli for w Pythonie:
dla x w zakresie(10):drukuj(x)
Pętla for powyżej wypisze dziesięć liczb zaczynających się od 0 i kończących się na 9.
Lista ze zrozumieniem
Zrozumienie listy to nic innego jak skrócony / zwięzły sposób na pisanie wielowierszowych pętli for w jednowierszowej instrukcji. Poniższy przykład rozumienia listy utworzy nową listę jako [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] poprzez uwzględnienie w niej wszystkich wartości „x”.
liczby = [x dla x w zakresie(10)]druk (liczby)
Zauważ, że zrozumienie listy zawsze tworzy nową listę i nie modyfikuje oryginalnych iterowalnych użytych w wyrażeniu. Typowe wyrażenie listowe musi zawierać klauzulę „for”, po której mogą występować instrukcje warunkowe „if” i „else”. Powyższy przykład zostanie napisany w następujący sposób bez użycia listu składanego:
liczby = []dla x w zakresie(10):
liczby.dołącz(x)
druk (liczby)
Wydajność i czytelność
Listy składane są szybsze niż pętle for. Jeśli jednak nie przeszukujesz setek tysięcy elementów, nie zauważysz znaczących ulepszeń wydajności. Podczas gdy zrozumienie list zapewnia zwięzły sposób pisania pętli, złożone wyrażenia mogą prowadzić do słabej czytelności kodu i zwiększonej szczegółowości. Ważne jest, aby kod był czytelny, chyba że osiągnięcie maksymalnej wydajności jest absolutną koniecznością dla Twojego programu.
Przykład: Używanie składni list składanych ze słownikami i zestawami
Słownik Pythona to zbiór elementów zdefiniowanych w parach klucz-wartość, podczas gdy zbiór to zbiór unikalnych wartości, w których duplikaty są niedozwolone. Listy składane mogą być również używane ze słownikami i zestawami Pythona. Składnia nieco się różni, zamiast zawijania wyrażenia w nawiasy kwadratowe, będziesz musiał teraz używać nawiasów klamrowych. Otrzymasz również nowy słownik / obiekt zestawu zamiast nowej listy.
data = "city": "nowy jork", "name": "jan kowalski"sformatowane_dane = k: v.title() dla k,v w danych.przedmiotów()
drukuj (dane sformatowane)
Powyższy przykład przekonwertuje wartości ciągu na wielkość liter i utworzy nowy słownik o nazwie „formatted_data”, którego wynikiem będzie: 'city': 'New York', 'name': 'John Doe'. Możesz również zmienić słownik / ustawić w miejscu, określając istniejącą zmienną słownika po lewej stronie.
data = "city": "nowy jork", "name": "jan kowalski"dane = k: v.title() dla k,v w danych.przedmiotów()
drukuj (dane)
Bez użycia tłumaczeń słownikowych kod wyglądałby tak:
data = "city": "nowy jork", "name": "jan kowalski"sformatowane_dane =
dla k, v w danych.przedmiotów():
sformatowane_dane[k] = v.tytuł()
drukuj (dane sformatowane)
Ponieważ w zestawach nie ma par klucz-wartość, zrozumienie zestawu można zdefiniować w taki sam sposób, jak zrozumienie listy. Jedyną różnicą jest użycie nawiasów klamrowych.
Przykład: wiele pętli for w zrozumieniu listy
Wspomniany powyżej przykład ze zrozumieniem listy jest prosty i używa pojedynczego wyrażenia „for”. Poniżej znajduje się przykład, który używa wielu pętli for i warunkowej instrukcji „if”.
przymiotniki = ["Disco", "Eoan", "Ogniskowa", "Artful"]zwierzęta = ["Dingo", "Ermine", "Fossa", "Bóbr"]
kryptonimy = [x + " " + y dla x w przymiotnikach dla y u zwierząt jeśli y.zaczyna się(x[0])]
druk (kryptonimy)
Kod pokaże ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] jako dane wyjściowe. Dwie pętle for przechodzą nad listami „przymiotników” i „zwierząt”, a ich elementy są łączone ze sobą za pomocą spacji, tylko jeśli pierwsza litera obu słów jest taka sama. Bez użycia list składanych kod wyglądałby tak:
przymiotniki = ["Disco", "Eoan", "Ogniskowa", "Artful"]zwierzęta = ["Dingo", "Ermine", "Fossa", "Bóbr"]
kryptonimy = []
dla x w przymiotnikach:
dla y u zwierząt:
jeśli ty.zaczyna się(x[0]):
kryptonimy.dołącz(x + " " + y)
druk (kryptonimy)
Przykład: Lista ze zrozumieniem z klauzulą if-else
Poniższy przykład pokaże użycie instrukcji if i else w listach składanych.
lista_numerów = [1, 2, 3, 4]inna_lista = [5, 6, 7, 8]
wynik = [True if (x + y) % 2 == 0 else False for x in number_list for y in other_list]
drukuj (wynik)
Podczas przechodzenia przez dwie listy, powyższe rozumienie listy sprawdza, czy suma pary elementów jest parzysta, czy nie. Uruchomienie powyższego kodu spowoduje wyświetlenie [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] jako dane wyjściowe. Bez korzystania ze zrozumienia list kod wyglądałby tak:
lista_numerów = [1, 2, 3, 4]inna_lista = [5, 6, 7, 8]
wynik = []
dla x w number_list:
dla y w other_list:
jeśli (x + y) % 2 == 0:
wynik.dołącz (prawda)
jeszcze:
wynik.dołącz (Fałsz)
drukuj (wynik)
Wniosek
Listy składane zapewniają dobry sposób na pisanie czystych i zwięzłych instrukcji pętli. Jednak mogą one szybko stać się skomplikowane i trudne do zrozumienia, jeśli używa się wielu pętli i instrukcji warunkowych. W końcu chodzi o poziom komfortu programisty, ale generalnie dobrym pomysłem jest pisanie wyraźnego, czytelnego i łatwego do debugowania kodu zamiast nadmiernego używania skrótów.