Lista zrozumienia w Pythonie

Lista zrozumienia w Pythonie
Rozumienia listy są często używane w Pythonie do pisania instrukcji pojedynczych linii, które tworzą nową listę lub słownik, zapętlając się nad iterabalnym obiektem. W tym artykule wyjaśniono, jak korzystać z rozumiania listy w Pythonie, poczynając od podstawowego wyjaśnienia pracy w Python w Python.

Do pętli w Python

A dla instrukcji pętli w Pythonie sekwencyjnie itera członków dowolnego obiektu, listy, ciągów 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 początkowej iteracji. Chociaż istnieją sposoby na uczynienie jego zachowania tak samo jak inne języki programowania (nie zostaną omówione w tym artykule). Możesz także wykonywać kontrolę nad pętlami, używając stwierdzeń takich jak kontynuacja, przerwa, przejście itp. Poniżej znajduje się prosty przykład pętli w Pythonie:

dla x w zakresie (10):
Drukuj (x)

Pętla dla powyższej wydrukuje dziesięć liczb, zaczynając od 0, a kończąc na 9.

Lista zrozumienie

Rozumienie listy to tylko krótki / zwięzły sposób pisania wielu linii dla pętli w oświadczeniu One-Liner. Poniższy przykład zrozumienia listy utworzy nową listę jako [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], włączając w IT wszystkie wartości „x”.

liczby = [x dla x w zakresie (10)]
wydrukuj (liczby)

Zauważ, że rozumienie listy zawsze tworzy nową listę i nie modyfikuje oryginalnych iterali używanych w wyrażeniu. Typowe wyrażenie rozumienia listy musi mieć klauzulę „dla”, a następnie instrukcje warunkowe „jeśli” i „inaczej”. Bez korzystania z rozumienia listy powyższy przykład zostanie napisany w następujący sposób:

liczby = []
dla x w zakresie (10):
liczby.Dodatek (x)
wydrukuj (liczby)

Wydajność i czytelność

Lista zrozumienie są szybsze niż w przypadku pętli. Jednak chyba że iterujesz ponad setki tysięcy przedmiotów, nie zauważysz znacznych ulepszeń wydajności. Podczas gdy zrozumienie listy stanowi zwięzły sposób pisania dla pętli, złożone wyrażenia mogą prowadzić do słabej czytelności kodu i zwiększonej gadatoś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: Korzystanie z składni zrozumienia listy ze słownikami i zestawami

Słownik Python to zbiór elementów zdefiniowanych w parach kluczowych, podczas gdy zestaw jest zbiorem unikalnych wartości, w których duplikaty są niedozwolone. Rozumienia list można również użyć ze słownikami i zestawami Python. Składnia różni się nieznacznie, zamiast owijać wyrażenie w kwadratowych aparatach ortodontyczny. Otrzymasz także nowy obiekt słownika / set zamiast nowej listy.

data = „City”: „New York”, „nazwa”: „John Doe”
Formatted_data = k: v.tytuł () dla k, v w danych.rzeczy()
print (Formated_Data)

Powyższy przykład przekonwertuje wartości ciągów na przypadek tytułu i utworzy nowy słownik o nazwie „Formated_Data”, którego dane wyjściowe będzie: „City”: „New York”, „nazwa”: „John Doe”. Możesz także zmienić słownik / ustawiony na miejscu, określając istniejącą zmienną słownika po lewej stronie.

data = „City”: „New York”, „nazwa”: „John Doe”
data = k: v.tytuł () dla k, v w danych.rzeczy()
Drukuj (dane)

Bez korzystania z Słownika rozumiania kod wyglądałby tak:

data = „City”: „New York”, „nazwa”: „John Doe”
Formated_Data =
dla k, v w danych.rzeczy():
Formated_Data [k] = v.tytuł()
print (Formated_Data)

Ponieważ nie ma par kluczowych w zestawach, ustawione zrozumienie można zdefiniować w taki sam sposób, jak rozumienie listy. Jedyną różnicą jest użycie kręconych aparatów ortodontycznych.

Przykład: wiele dla pętli w rozumieniu listy

Wspomniany powyżej przykład zrozumienia listy jest podstawowy i używa jednego instrukcji „dla”. Poniżej znajduje się przykład, który używa wielu do pętli i warunkowego instrukcji „jeśli”.

przymiotniki = [„disco”, „eoan”, „ogniskowe”, „pomysłowe”]
Animals = [„dingo”, „gront”, „fossa”, „bobra”]
Codenames = [x + "" + y dla x w przymiotnikach y u zwierząt, jeśli y.startswith (x [0])]
Drukuj (nazwy kodowe)

Kod pokaże [„Disco Dingo”, „Eoan Ermine”, „Focal Fossa”] jako wyjście. Dwie listy „przymiotników” i „Przymiotniki” i „Zwierzęta”, a ich członkowie są połączeni za pomocą przestrzeni, tylko wtedy, gdy pierwsza litera obu słów jest taka sama. Bez korzystania z zrozumienia listy kod wyglądałby tak:

przymiotniki = [„disco”, „eoan”, „ogniskowe”, „pomysłowe”]
Animals = [„dingo”, „gront”, „fossa”, „bobra”]
Codenames = []
Dla x w przymiotnikach:
Dla y u zwierząt:
Jeśli y.startswith (x [0]):
nazwy kodowe.append (x + "" + y)
Drukuj (nazwy kodowe)

Przykład: rozumienie listy z klauzulą ​​IF-Else

Poniższy przykład pokaże użycie stwierdzeń IF i else na liście zrozumienie.

Number_list = [1, 2, 3, 4]
inny_list = [5, 6, 7, 8]
wynik = [true if (x + y) % 2 == 0 else Fałsz dla x w numerze_list dla y w innym listach]
Drukuj (wynik)

Podczas zapętlania dwóch list, rozumienie listy powyżej sprawdza, czy suma pary elementów jest równa, czy nie. Uruchamianie powyższego kodu wyświetli [prawda, false, true, false, true, false, true, true, false, false, false, true, false, true] jako wyjście. Bez korzystania z rozumienia listy kod wyglądałby tak:

Number_list = [1, 2, 3, 4]
inny_list = [5, 6, 7, 8]
wynik = []
dla x w numerem_list:
Dla y w innym listach:
if (x + y) % 2 == 0:
wynik.Dodatek (prawda)
w przeciwnym razie:
wynik.Dodatek (fałsz)
Drukuj (wynik)

Wniosek

Lista zrozumienia stanowi dobry sposób na pisanie czystej i zwięzłej pętli. Mogą jednak szybko stać się złożone i trudne do zrozumienia, czy używane jest wiele pętli i instrukcji warunkowych. Ostatecznie dochodzi do poziomu komfortu programisty, ale ogólnie dobrym pomysłem jest pisanie jawnego, czytelnego i łatwego do debugowania kodu zamiast nadmiernego używania skrótów.