Wprowadzenie do rozumienia listy w języku Python
Zrozumienie listy w języku Python jest innym sposobem tworzenia list przy użyciu operacji iteracji. Działa tak samo, jak działa pętla, ale LC służy do zwracania list. Wyrażenia listowe mają wyrażenia w nawiasach kwadratowych, takie jak tworzenie normalnej listy, wyrażenie zostanie wykonane dla wszystkich elementów.
Zrozumienie list jest bardzo przydatne w nauce o danych, gdzie odczytuje się listy / filtruje nazwy kolumn / usuwa pozycje z list itp. Chociaż możemy użyć pętli i funkcji lambda do wykonania pewnych czynności, rozumienie list zapewnia elegancki i prosty sposób przedstawienia tego samego.
Wyrażeń listowych można używać do zastępowania metod map (), zmniejszania () i filter ().
Zrozumienie listy jest jak Teoria zestawów z klas licealnych.
Przykład:
( x: x is a natural number greater than 15 )
( x: x is a vowel in word 'Data Science', x is a vowel )
Utwórzmy zestawienie list dla powyższych dwóch instrukcji.
(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))
Wynik:
(16, 17, 18, 19) („a”, „a”, „i”, „e”, „e”)Wyjaśnienia list są łatwe do zrozumienia i wdrożenia. Zasadniczo są one tworzone na tabelach. Podczas pisania składni list ze zrozumieniem należy wziąć pod uwagę trzy kwestie.
- Parametr dla wyjścia
- Iterowalne
- Warunki
Składnia może mieć dwa z powyższych lub 3 z powyższych jako składnia do zrozumienia listy.
Składnia:
(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )
Przykłady zrozumienia listy w języku Python
Tutaj omówimy, jak używać rozumienia listy za pomocą Pythona. Przykłady zobaczymy w inny sposób, ponieważ uruchomimy je za pomocą pętli for, a następnie utworzymy to samo, używając wyrażeń listowych.
Przykład 1: Znalezienie idealnych kwadratów
Oto przykłady idealnych kwadratów w różnych warunkach podanych poniżej:
1. With for Loop
for i in range(1, 30):
if int(i**0.5)==i**0.5:
print(i)
2. Korzystanie ze zrozumień listy
(x for x in range(1, 30) if int(x**0.5)==x**0.5)
Wynik:
Przykład 2: Zdobądź tylko Spółgłoski z Zdania
Tutaj weźmiemy jedno dowolne zdanie i postaramy się uzyskać spółgłoski w tym zdaniu jako nasz wynik.
1. Korzystanie z pętli
def consonants_for(sentence):
vowels = 'aeiou'
consonants = () for x in sentence:
if x not in vowels:
consonants.append(x)
return ''.join(consonants)
sentence = 'we are studying list comprehensions'
print("With For Loop : " + consonants_for(sentence))
Wynik:
With For Loop: wr stdyng lst cmprhnsns
2. Korzystanie ze zrozumienia listy
def consonants_lc(sentence):
vowels = 'aeiou'
return ''.join(( x for x in sentence if x not in vowels))
sentence = 'we are studying list comprehensions'
print("Using List Compr: " + consonants_lc(sentence))
Wynik:
Korzystanie z List Compr: wr stdyng lst cmprhnsns
Przykład 3: Tworzenie słownika z dwóch, w przeciwieństwie do list
Oto przykłady słownika z różnymi warunkami podanymi poniżej:
1. Korzystanie z pętli
def dict_for(keys, values):
dictionary = ()
for i in range(len(keys)):
dictionary(keys(i)) = values(i) return dictionary
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("FOR-loop result: " + str(dict_for(Movie, Actor)))
Wynik:
Wynik pętli FOR: („RDB”: „Aamire”, „Wanted”: „Salman”, „DDLG”: „SRK”, „Sholay”: „Amitabh”, „War”: „Hritik”)
2. Korzystanie ze zrozumienia listy
def dict_lc(keys, values):
return ( keys(i) : values(i) for i in range(len(keys)) )
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("LC result : " + str(dict_lc(Movie, Actor)))
Wynik:
Wynik LC: („RDB”: „Aamire”, „Wanted”: „Salman”, „DDLG”: „SRK”, „Sholay”: „Amitabh”, „War”: „Hritik”)
Korzyści ze zrozumienia listy w języku Python
Wyrażenia listowe wykonują to samo zadanie, ale w inny sposób!
Zrozumienie listy ma wiele zalet w stosunku do pętli i innych metod. Niektóre korzyści są następujące:
- Zrozumienie listy jest łatwe do zrozumienia i sprawia, że kod jest elegancki. Możemy napisać program za pomocą prostych wyrażeń.
- Zrozumienie listy jest znacznie szybsze niż w przypadku pętli i innych metod, takich jak mapa. (To samo wyjaśniono w poniższym przykładzie:
Jako przykład weźmiemy przykład 1 i obliczymy czas potrzebny różnym metodom na wykonanie tej samej funkcji. Najpierw zobaczymy czas zajęty przez „for loop”, a następnie czas zostanie wykorzystany przez metodę map (), a na koniec zobaczymy czas zajęty przez interpretację listy.
Tabela pokazuje czas potrzebny na różne techniki.
1. Dla pętli
Przykład użycia pętli for podanej poniżej:
Kod:
def perf_square(x):
output = () for i in x:
if int(i**0.5)==i**0.5:
output.append(i)
return output
%timeit perf_square(range(1, 30))
2. Metoda mapy
Przykład użycia metody mapy podanej poniżej:
Kod:
def perf_square_map(x):
return map(lambda i: i**0.5==i**0.5, x)
%timeit perf_square_map(range(1, 30))
3. Zrozumienie listy
Przykład z wykorzystaniem poniższego opisu listy:
Kod:
def perf_square_lc(x):
return (i**0.5 == i**0.5 for i in x) %timeit perf_square_lc(range(1, 30))
Wynik:
metoda | Czas |
Dla pętli | 787 ns |
Metoda Map () | 518 ns |
Zrozumienie listy | 276 ns |
Wyraźnie czas wykonania listy jest 2, 85 razy szybszy niż w przypadku pętli i 1, 87 razy szybszy niż metoda mapy. Wyrażenia listowe pozostawiają inne metody z dużym marginesem. Mogą być spekulacje, więc dlaczego nie używamy LC we wszystkich miejscach, a nie w pętlach? LC jest szybsza w większości przypadków i może zastąpić pętle w prawie 80% przypadków. Ale nie możemy zastąpić pętli, istnieją przypadki, w których mamy dobrą liczbę warunków, a klasy są zagnieżdżone w pętli. W takich przypadkach użycie LC może być dość kłopotliwe i niewykonalne. W takich sytuacjach lepiej jest szukać pętli. Chociaż można użyć funkcji Wypisywanie listy w przypadku pętli, aby zastąpić inne w przypadku pętli. Zmniejszy to czas wykonywania, a także utrzyma przyjazność kodu dla użytkownika.
- Możemy zagnieżdżać wiele warunków na liście.
- LC może wykonywać operacje na wielu zmiennych.
- Aby uzyskać dane wyjściowe, nie trzeba podawać osobnego polecenia.
- Wyjaśnienia list zmniejszają złożoność kodu.
- Zrozumienie listy jest wydajne.
Wniosek
Rozumienia list są używane do tworzenia list z iteracyjnego procesu. Wykazy list są łatwe do zrozumienia / wdrożenia i sprawiają, że kod jest elegancki. Rozumienie listy jest zwarte i przyjazne dla użytkownika.
Omówiliśmy składnię wyrażeń listowych oraz kilka dobrych, wnikliwych przykładów. W końcu napisaliśmy jeden program, aby uzyskać czas z każdej metody. Doszliśmy do wniosku, że LC jest 2, 85 razy szybszy niż dla pętli i 1, 87 razy szybszy niż metoda map ().
Polecane artykuły
Jest to przewodnik po zrozumieniu listy w języku Python. Tutaj omawiamy zalety zrozumienia listy python wraz ze składnią i przykładami z różnymi warunkami. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej-
- Konstruktor w Javie
- Sortowanie w Javie
- Konstruktor w Javie
- JCheckBox w Javie
- Przewodnik po sortowaniu w C # z przykładami
- Funkcja sortowania w Pythonie z przykładami
- Pętle w VBScript z przykładami
- Przykłady implementacji pola wyboru w Bootstrap