Listy składane w Pythonie

List Comprehensions Python



Listy składane są często używane w Pythonie do pisania jednowierszowych instrukcji, które tworzą nową listę lub słownik przez zapętlenie obiektu iterowalnego. W tym artykule wyjaśnimy, jak używać wyrażeń listowych w Pythonie, zaczynając od podstawowego wyjaśnienia, jak działają pętle for w Pythonie.

Pętla w Pythonie

Instrukcja pętli for w Pythonie sekwencyjnie iteruje po członkach dowolnego obiektu, listy, ciągu itp. W porównaniu z innymi językami programowania jej 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:







dlaxw zasięg(10):
wydrukować(x)

Pętla for powyżej wypisze dziesięć liczb zaczynając od 0 i kończąc na 9.



Lista ze zrozumieniem

Zrozumienie listy to nic innego jak skrócony/zwięzły sposób na napisanie wielowierszowych pętli for w jednowierszowej instrukcji. Poniższy przykład ze zrozumieniem 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= [xdlaxw zasięg(10)]
wydrukować (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 bez użycia listu składanego będzie napisany w następujący sposób:





liczby= []
dlaxw zasięg(10):
liczby.dodać(x)

wydrukować (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 znacznej poprawy wydajności. Podczas gdy rozumienie 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 zestaw 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 różni się nieco, 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.



dane= {'Miasto':'Nowy Jork', 'Nazwa':'nieznany z nazwiska'}

sformatowane_dane= {k: v.tytuł() dlado,vwdane.rzeczy()}

wydrukować (sformatowane_dane)

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: {'miasto': 'Nowy Jork', 'imię': 'Jan Kowalski'}. Możesz również zmienić słownik / ustawić w miejscu, określając istniejącą zmienną słownikową po lewej stronie.

dane= {'Miasto':'Nowy Jork', 'Nazwa':'nieznany z nazwiska'}

dane= {k: v.tytuł() dlado,vwdane.rzeczy()}

wydrukować (dane)

Bez użycia tłumaczeń słownikowych kod wyglądałby tak:

dane= {'Miasto':'Nowy Jork', 'Nazwa':'nieznany z nazwiska'}

sformatowane_dane= {}

dlado,vwdane.rzeczy():
sformatowane_dane[do] =v.tytuł()

wydrukować (sformatowane_dane)

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 pojedynczej instrukcji for. Poniżej znajduje się przykład, który używa wielu pętli for i warunkowej instrukcji if.

przymiotniki= ['Dysk', „Eoan”, 'Ogniskowy', 'Pomysłowy']

Zwierząt= ['Dingo', 'Gronostaj', 'Jama', 'Bóbr']

kryptonimy= [x +''+ idlaxwprzymiotnikidlaorazwZwierzątJeślioraz.zaczynać z(x[0])]

wydrukować (kryptonimy)

Kod pokaże [‘Disco Dingo’, ‘Eoan Ermine’, ‘Focal Fossa’] jako wyjście. Dwie pętle for przechodzą nad listami przymiotników i zwierząt, a ich elementy są łączone spacją tylko wtedy, gdy pierwsza litera obu słów jest taka sama. Bez użycia list składanych kod wyglądałby tak:

przymiotniki= ['Dysk', „Eoan”, 'Ogniskowy', 'Pomysłowy']
Zwierząt= ['Dingo', 'Gronostaj', 'Jama', 'Bóbr']

kryptonimy= []

dlaxwprzymiotniki:
dlaorazwZwierząt:
Jeślioraz.zaczynać z(x[0]):
kryptonimy.dodać(x +''+ i)

wydrukować (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]
kolejna_lista= [5, 6, 7, 8]

wynik= [Prawdziwe Jeśli (x + y)%2 == 0 w przeciwnym razie Fałszywe dlaxwlista_numerówdlaorazwkolejna_lista]

wydrukować (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 danych wyjściowych [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True]. Bez korzystania ze zrozumienia list kod wyglądałby tak:

lista_numerów= [1, 2, 3, 4]
kolejna_lista= [5, 6, 7, 8]
wynik= []

dlaxwlista_numerów:
dlaorazwother_list:
Jeśli (x + y)%2 == 0:
wynik.dodać(Prawdziwe)
w przeciwnym razie:
wynik.dodać(Fałszywe)

wydrukować (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ę złożone i trudne do zrozumienia, jeśli używanych jest wiele 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.