1. ProgrammingPythonJak korzystać z funkcji lambda w Pythonie

Alan Shovic, John Shovic

Python obsługuje pojęcie funkcji anonimowych, zwanych także funkcjami lambda. Anonimowa część nazwy opiera się na fakcie, że funkcja nie musi mieć nazwy (ale może ją mieć, jeśli chcesz). Część lambda oparta jest na użyciu słowa kluczowego lambda do zdefiniowania ich w Pythonie. Lambda jest także 11. literą alfabetu greckiego.

Ale głównym powodem, dla którego nazwa jest używana w Pythonie, jest to, że termin lambda jest używany do opisania funkcji anonimowych w rachunku różniczkowym. Teraz, gdy to wyjaśniliśmy, możesz użyć tych informacji, aby wywołać fascynującą rozmowę na przyjęciach biurowych.

Minimalna składnia do definiowania wyrażenia lambda (bez nazwy) w Pythonie to:

Argumenty Lambda: wyrażenie

Podczas korzystania:

  • Zamień argumenty na dane przekazywane do wyrażenia. Zamień wyrażenie na wyrażenie (formuła), które określa, co ma zwrócić lambda.

Dość częstym przykładem użycia tej składni jest próba sortowania ciągów tekstu, w których niektóre nazwy zaczynają się od wielkich liter, a niektóre zaczynają się od małych liter, jak w tych nazwach:

Adams, Ma, diMeola, Zandusky

Załóżmy, że napisałeś następujący kod, aby umieścić nazwy na liście, posortować je, a następnie wydrukować listę, w ten sposób:

names = [„Adams”, „Ma”, „diMeola”, „Zandusky”]
names.sort ()
drukuj (nazwiska)

Wynikiem tego jest:

[„Adams”, „Ma”, „Zandusky”, „diMeola”]

Posiadanie diMeoli po Zandusky wydaje się błędem dla niektórych początkujących. Ale komputery nie zawsze widzą rzeczy tak, jak my. (W rzeczywistości niczego nie „widzą”, ponieważ nie mają oczu ani mózgu… ale to nie ma znaczenia.) Powodem, dla którego diMeola pojawia się po Zandusky, jest to, że sortowanie oparte jest na ASCII, czyli systemie, w którym każdy znak jest reprezentowany przez liczbę.

Wszystkie małe litery mają cyfry większe niż wielkie litery. Podczas sortowania wszystkie słowa zaczynające się od małych liter następują po słowach rozpoczynających się od dużej litery. Jeśli nic więcej, to przynajmniej gwarantuje niewielki hmm.

Aby pomóc w tych sprawach, metoda sort () Pythona pozwala na umieszczenie w nawiasach wyrażenia key =, w którym można powiedzieć, jak sortować. Składnia jest następująca:

.sort (klucz = transformacja)

Część przekształcająca jest pewną odmianą sortowanych danych. Jeśli masz szczęście i jedna z wbudowanych funkcji, takich jak len (dla długości), będzie dla ciebie działać, możesz po prostu użyć tego zamiast transformacji, tak jak to:

names.sort (key = len)

Niestety dla nas długość łańcucha nie pomaga w alfabetyce. Po uruchomieniu tej kolejności okazuje się, że:

[„Ma”, „Adams”, „diMeola”, „Zandusky”]

Sortowanie przebiega od najkrótszego ciągu (ten z najmniejszą liczbą znaków) do najdłuższego ciągu. W tej chwili nie jest to pomocne.

Nie można także pisać key = lower ani key = upper, aby oprzeć sortowanie na wszystkich małych lub wszystkich wielkich literach, ponieważ dolne i górne nie są funkcjami wbudowanymi (które można dość szybko zweryfikować za pomocą wbudowanego Pythona 3.7) Funkcje).

Zamiast wbudowanej funkcji możesz użyć funkcji niestandardowej, którą sam definiujesz za pomocą def. Na przykład można utworzyć funkcję o nazwie lower (), która akceptuje ciąg znaków i zwraca ten ciąg znaków, a wszystkie litery są konwertowane na małe litery. Oto funkcja:

def niższa (anystring):
„” „Konwertuje ciąg na małe litery„ ”„ ”
return anystring.lower ()

Niższa nazwa jest wymyślona, ​​a anystring jest symbolem zastępczym dla każdego łańcucha, który przekażesz mu w przyszłości. Zwracana anystring.lower () zwraca ten ciąg przekonwertowany na wszystkie małe litery przy użyciu metody .lower () obiektu str (string). (Więcej informacji na temat metod ciągów Python.)

Nie można używać key = lower w nawiasach sort (), ponieważ lower () nie jest funkcją wbudowaną. To metoda… nie taka sama. Trochę denerwujące tymi wszystkimi modnymi słowami.

Załóżmy, że zapisujesz tę funkcję w komórce Jupyter lub pliku .py. Następnie wywołujesz funkcję z czymś takim jak print (małe litery („Zandusky”)). Jako wynik otrzymujesz ciąg znaków przekonwertowany na wszystkie małe litery, jak pokazano poniżej.

funkcja niestandardowa lower () w Pythonie

Okej, więc teraz masz niestandardową funkcję konwersji dowolnego łańcucha na wszystkie małe litery. Jak używasz tego jako klucza sortowania? Łatwo, użyj klawisza = transformuj tak samo jak poprzednio, ale zamień transformację na własną nazwę funkcji. Funkcja nazywa się małymi literami, więc możesz użyć .sort (klucz = małe litery), jak pokazano poniżej:

def małe litery (anystring):
„” „Konwertuje ciąg na małe litery„ ”„ ”
return anystring.lower ()
 
names = [„Adams”, „Ma”, „diMeola”, „Zandusky”]
names.sort (key = smallcaseof)

Uruchomienie tego kodu w celu wyświetlenia listy nazw umieszcza je we właściwej kolejności, ponieważ opierało sortowanie na ciągach pisanych małymi literami. Dane wyjściowe są takie same jak poprzednio, ponieważ tylko sortowanie, które odbyło się za sceną, używało małych liter. Oryginalne dane są nadal w oryginalnych wielkich i małych literach.

„Adams”, „diMeola”, „Ma”, „Zandusky”

Jeśli po przeczytaniu tego wszystkiego nadal jesteś przytomny i przytomny, możesz pomyśleć: „Dobrze, rozwiązałeś problem z sortowaniem. Ale myślałem, że mówimy tutaj o funkcjach lambda. Gdzie jest funkcja lambda? ”Nie ma jeszcze funkcji lambda.

Jest to jednak doskonały przykład użycia funkcji lambda, ponieważ wywoływana funkcja Python, lowercaseof (), wykonuje całą swoją pracę za pomocą tylko jednego wiersza kodu: return anystring.lower ().

Kiedy twoja funkcja potrafi zrobić to za pomocą prostego wyrażenia jednowierszowego, możesz pominąć definicję def i nazwę funkcji i po prostu użyć tej składni:

parametry lambda: wyrażenie

Zamień parametry na jedną lub więcej nazw parametrów, które sam wymyślisz (nazwy w nawiasach po definicji def i nazwa funkcji w zwykłej funkcji). Zamień wyrażenie na to, co funkcja ma zwrócić bez słowa return. W tym przykładzie kluczem, przy użyciu wyrażenia lambda, byłoby:

lambda anystring: anystring.lower ()

Teraz możesz zobaczyć, dlaczego jest to anonimowa funkcja. Cały pierwszy wiersz o nazwie funkcji smallcaseof () został usunięty. Zaletą używania wyrażenia lambda jest to, że w ogóle nie potrzebujesz zewnętrznej niestandardowej funkcji. Potrzebujesz tylko parametru, po którym następuje dwukropek i wyrażenie, które mówi, co zwrócić.

Poniższy obraz pokazuje pełny kod i wynik jego uruchomienia. Otrzymujesz właściwą kolejność sortowania bez potrzeby użycia zewnętrznej funkcji klienta, takiej jak lowercaseof (). Wystarczy użyć anystring: anystring.lower () (po słowie lambda) jako klucza sortowania.

Wyrażenie lambda w języku Python

Dodajmy także, że anystring jest dłuższą nazwą parametru niż większość Pythonistów użyłaby. Pythonowie lubią krótkie nazwy, nawet nazwy jednoliterowe. Na przykład możesz zamienić anystring na s (lub dowolną inną literę), jak poniżej, a kod będzie działał dokładnie tak samo:

names = [„Adams”, „Ma”, „diMeola”, „Zandusky”]
names.sort (key = lambda s: s.lower ())
drukuj (nazwiska)

Już na początku tej tyrady wspomniano, że funkcja lambda nie musi być anonimowa. Możesz nadawać im nazwy i wywoływać je tak, jak inne funkcje.

Na przykład, tutaj jest funkcja lambda o nazwie waluta, która przyjmuje dowolną liczbę i zwraca ciąg znaków w formacie walutowym (czyli z wiodącym znakiem dolara, przecinkami między tysiącami i dwiema cyframi groszy):

waluta = lambda n: f „$ {n:,. 2f}”

Oto jeden nazwany procent, który zwielokrotnia dowolną liczbę, którą do niego wysyłasz, przez 100 i pokazuje go ze znakiem dwóch procent na końcu:

procent = lambda n: f "{n: .2%}"

Poniższy obraz pokazuje przykłady obu funkcji zdefiniowanych w górnej części komórki Jupyter. Następnie kilka instrukcji drukowania wywołuje funkcje według nazwy i przekazuje im przykładowe dane. Każda instrukcja print () wyświetla liczbę w żądanym formacie.

Liczby formatujące w języku Python

Powodem, dla którego możesz zdefiniować je jako lambdy jednowierszowe, jest to, że możesz wykonać całą pracę w jednym wierszu, f "$ {n:,. 2f}" dla pierwszego i f "{n: .2%}" dla Drugi. Ale to, że możesz to zrobić w ten sposób, nie oznacza, że ​​musisz. Możesz również użyć zwykłych funkcji w następujący sposób:

# Pokaż liczbę w formacie walutowym.
def waluta (n):
return f "$ {n:,. 2f}"
 
def procent (n):
# Pokaż liczbę w formacie procentowym.
zwraca f „{n: .2%}”

Przy tej dłuższej składni możesz również przekazać więcej informacji. Na przykład możesz domyślnie ustawić format wyrównany do prawej w ramach określonej szerokości (powiedzmy 15 znaków), aby wszystkie liczby wyszły wyrównane do prawej do tej samej szerokości. Zdjęcie pokazuje tę zmianę dwóch funkcji.

Stała szerokość funkcji formatowania w języku Python

Na powyższym obrazku drugi parametr jest opcjonalny i domyślnie wynosi 15, jeśli zostanie pominięty. Więc jeśli nazwiesz to tak:

druk (waluta (9999))

… Otrzymujesz 9 999 USD dopełnienia z wystarczającą ilością miejsca po lewej stronie, aby mieć 15 znaków szerokości. Jeśli zamiast tego nazwiesz to tak:

drukuj (waluta (9999,20)

… Nadal otrzymujesz 9 999 USD, ale po lewej stronie jest wystarczająca ilość miejsca, aby mieć 20 znaków szerokości.

Powyższa metoda .ljust () jest wbudowaną w Python metodą ciągów, która wypełnia lewą stronę ciągu wystarczającą ilością miejsca, aby uzyskać określoną szerokość. Istnieje również metoda rjust () do wypełnienia prawej strony. Możesz także określić znak inny niż spację. Google python 3 wystarczy, jeśli potrzebujesz więcej informacji.

Masz więc możliwość tworzenia własnych niestandardowych funkcji w Pythonie. W prawdziwym życiu chcesz za każdym razem, gdy okaże się, że potrzebujesz dostępu do tego samego fragmentu kodu - tego samego loginu - w swojej aplikacji, nie kopiuj / wklej tego fragmentu kod w kółko. Zamiast tego umieść cały ten kod w funkcji, którą możesz wywołać według nazwy.

W ten sposób, jeśli zdecydujesz się zmienić kod łańcuchowy Pythona, nie musisz przeglądać aplikacji, aby znaleźć wszystkie miejsca, które wymagają zmiany. Po prostu zmień to w funkcji, w której wszystko jest zdefiniowane w jednym miejscu.

  1. ProgrammingPythonJak definiować i używać list w języku Python

Alan Shovic, John Shovic

Najprostszym zbiorem danych w Pythonie jest lista. Lista to dowolna lista elementów danych, oddzielona przecinkami, w nawiasach kwadratowych. Zazwyczaj przypisujesz nazwę do listy Python za pomocą znaku =, podobnie jak w przypadku zmiennych. Jeśli lista zawiera liczby, nie używaj cudzysłowów wokół nich. Oto na przykład lista wyników testu:

wyniki = [88, 92, 78, 90, 98, 84]

Jeśli lista zawiera ciągi, to jak zwykle ciągi te powinny być ujęte w pojedyncze lub podwójne cudzysłowy, jak w tym przykładzie:

Aby wyświetlić zawartość listy na ekranie, możesz wydrukować ją tak jak zwykłą zmienną. Na przykład wykonanie wydruku (studentów) w kodzie po zdefiniowaniu tej listy pokazuje to na ekranie.

[„Mark”, „Amber”, „Todd”, „Anita”, „Sandy”]

To może nie być dokładnie to, co miałeś na myśli. Ale nie martw się, Python oferuje wiele świetnych sposobów uzyskiwania dostępu do danych na listach i wyświetlania ich w dowolny sposób.

Odwoływanie się do elementów listy Python według pozycji

Każdy element na liście ma numer pozycji, zaczynający się od zera, nawet jeśli nie widać żadnych liczb. Do dowolnej pozycji na liście można odwoływać się za pomocą jej numeru, używając nazwy listy, a następnie liczby w nawiasach kwadratowych. Innymi słowy, użyj tej składni:

nazwa listy [x]

Zamień nazwę listy na nazwę listy, do której masz dostęp i zamień x na numer pozycji, którą chcesz. Pamiętaj, że pierwszy element ma zawsze numer zero, a nie jeden. Na przykład w pierwszym wierszu poniżej definiuję listę o nazwie studenci, a następnie drukuję z niej numer pozycji zero. W wyniku wykonania kodu wyświetlana jest nazwa Mark.
studenci = [„Mark”, „Amber”, „Todd”, „Anita”, „Sandy”]
drukuj (studenci [0])
znak

Podczas czytania elementów listy dostępu specjaliści używają słowa sub przed liczbą. Na przykład uczniowie [0] będą wymawiani, gdy uczniowie osiągną zero.

Następny przykład pokazuje listę o nazwie wyniki. Funkcja print () drukuje numer pozycji ostatniego wyniku na liście, który wynosi 4 (ponieważ pierwszy jest zawsze równy zero).

wyniki = [88, 92, 78, 90, 84]
drukuj (wyniki [4])
84

Jeśli spróbujesz uzyskać dostęp do elementu listy, który nie istnieje, pojawia się błąd „poza zakresem”. Część indeksu jest odniesieniem do liczby w nawiasach kwadratowych. Na przykład obraz poniżej pokazuje mały eksperyment w notatniku Jupytera, w którym utworzono listę partytur, a następnie podjęto próbę wydrukowania partytury [5].

Nie powiodło się i wygenerował błąd, ponieważ nie ma wyników [5]. Są tylko wyniki [0], wyniki [1], wyniki [2], wyniki [3] i wyniki [4], ponieważ liczenie zawsze zaczyna się od zera z pierwszym na liście.

Zakres indeksu Python

Pętla przez listę Python

Aby uzyskać dostęp do każdego elementu na liście, użyj pętli for z następującą składnią:

dla x na liście:

Zastąp x wybraną nazwą zmiennej. Zamień listę na nazwę listy. Łatwym sposobem uczynienia kodu czytelnym jest zawsze użycie liczby mnogiej dla nazwy listy (np. Studenci, wyniki). Następnie możesz użyć nazwy pojedynczej (uczeń, wynik) dla nazwy zmiennej. Przy takim podejściu nie musisz także używać liczb indeksu dolnego (liczb w nawiasach kwadratowych). Na przykład poniższy kod drukuje każdy wynik na liście wyników:

za wynik w punktacji:
drukuj (wynik)

Pamiętaj, aby zawsze wciąć kod, który ma zostać wykonany w pętli. Ten obraz pokazuje bardziej kompletny przykład, w którym można zobaczyć wynik uruchomienia kodu w notatniku Jupyter.

Pętla przez listę Python

Sprawdzanie, czy lista Python zawiera element

Jeśli chcesz, aby Twój kod sprawdzał zawartość listy, aby zobaczyć, czy zawiera ona już jakiś element, użyj w nazwie listy w instrukcji if lub przypisaniu zmiennej.

Na przykład kod na obrazku poniżej tworzy listę nazw. Następnie dwie zmienne przechowują wyniki wyszukiwania na liście nazwisk Anita i Bob. Drukowanie zawartości każdej zmiennej pokazuje True dla tej, w której nazwa (Anita) znajduje się na liście. Test mający na celu sprawdzenie, czy Bob znajduje się na liście, potwierdza fałsz.

Sprawdzanie, czy element znajduje się na liście w języku Python

Uzyskiwanie długości listy Python

Aby ustalić, ile pozycji jest na liście, użyj funkcji len () (skrót od długości). Umieść nazwę listy w nawiasach. Na przykład wpisz następujący kod w notatniku Jupyter lub pytaniu Python lub cokolwiek innego:

studenci = [„Mark”, „Amber”, „Todd”, „Anita”, „Sandy”]
drukuj (len (studenci))

Uruchomienie tego kodu daje następujące dane wyjściowe:

5

Rzeczywiście jest pięć elementów na liście, chociaż ostatni jest zawsze o jeden mniejszy od liczby, ponieważ Python zaczyna zliczać od zera. Tak więc ostatni, Sandy, faktycznie odnosi się do studentów [4], a nie studentów [5].

Dołączanie elementu na końcu listy Pythona

Jeśli chcesz, aby Twój kod Python dodał nowy element na końcu listy, użyj metody .append () z wartością, którą chcesz dodać w nawiasach. W cudzysłowie można użyć nazwy zmiennej lub wartości literalnej.

Na przykład na poniższym obrazku wiersz z napisem student.append („Goober”) dodaje nazwę Goober do listy. Wiersz odczytujący student.append (new_student) dodaje do listy dowolną nazwę przechowywaną w zmiennej o nazwie new_student. Metoda .append () zawsze dodaje się na końcu listy. Kiedy więc wydrukujesz listę, zobaczysz te dwie nowe nazwy na końcu.

Lista załączników w języku Python

Możesz użyć testu, aby sprawdzić, czy element znajduje się na liście, a następnie dołączyć go tylko wtedy, gdy elementu jeszcze nie ma. Na przykład poniższy kod nie doda nazwy Amber do listy, ponieważ ta nazwa jest już na liście:

student_name = "Amanda"

# Dodaj nazwę ucznia, ale tylko jeśli nie ma go już na liście.
jeśli student_name w studentach:
    print (nazwa_ studenta + „już na liście”)
jeszcze:
    students.append (student_name)
    print (nazwa_ studenta + „dodano do listy”)

Wstawianie elementu do listy Python

Chociaż metoda append () pozwala na dodanie elementu na końcu listy, metoda insert () pozwala na dodanie elementu do listy w dowolnej pozycji. Składnia instrukcji insert () to

listname.insert (pozycja, pozycja)

Zamień nazwę listy na nazwę listy, pozycję na pozycję, w której chcesz wstawić element (na przykład 0, aby uczynić go pierwszym elementem, 1, aby uczynić go drugim, itd.). Zamień element na wartość lub nazwę zmiennej zawierającej wartość, którą chcesz umieścić na liście.

Na przykład następujący kod czyni Lupe pierwszym elementem na liście:

# Utwórz listę ciągów (nazw).
studenci = [„Mark”, „Amber”, „Todd”, „Anita”, „Sandy”]

student_name = "Lupe"
# Dodaj nazwisko ucznia na początku listy.
students.insert (0, nazwa_ studenta)

# Pokaż mi nową listę.
drukuj (studenci)

Jeśli uruchomisz kod, print (studenci) pokaże listę po wstawieniu nowej nazwy, w następujący sposób:

[„Lupe”, „Mark”, „Amber”, „Todd”, „Anita”, „Sandy”]

Zmiana elementu na liście Python

Możesz zmienić element na liście za pomocą operatora = przypisanie (sprawdź te popularne operatory w języku Python), podobnie jak w przypadku zmiennych. Upewnij się, że umieściłeś numer indeksu w nawiasach kwadratowych elementu, który chcesz zmienić. Składnia jest następująca:

nazwa listy [indeks] = nowa wartość

Zamień nazwę listy na nazwę listy; zamień indeks na indeks dolny (numer indeksu) elementu, który chcesz zmienić; i zamień newvalue na cokolwiek, co chcesz umieścić w elemencie listy. Na przykład spójrz na ten kod:

# Utwórz listę ciągów (nazw).
studenci = [„Mark”, „Amber”, „Todd”, „Anita”, „Sandy”]
studenci [3] = „Hobart”
drukuj (studenci)

Po uruchomieniu tego kodu dane wyjściowe są następujące, ponieważ nazwa Anity została zmieniona na Hobart.

[„Mark”, „Amber”, „Todd”, „Hobart”, „Sandy”]

Łączenie list w języku Python

Jeśli masz dwie listy, które chcesz połączyć w jedną listę, użyj funkcji ext () ze składnią:

original_list.extend (additional_items_list)

W kodzie zastąp original_list nazwą listy, do której będziesz dodawać nowe elementy listy. Zamień dodatkowe_punkty_listy na nazwę listy zawierającej elementy, które chcesz dodać do pierwszej listy. Oto prosty przykład z wykorzystaniem list o nazwach list1 i list2. Po wykonaniu list1.extend (list2) pierwsza lista zawiera elementy z obu list, jak widać na końcu instrukcji print () na końcu.

# Utwórz dwie listy nazw.
list1 = [„Zara”, „Lupe”, „Hong”, „Alberto”, „Jake”]
list2 = [„Huey”, „Dewey”, „Louie”, „Nader”, „Bubba”]

# Dodaj nazwy list2 do listy1.
list1.extend (list2)

# Wydrukuj listę 1.
drukuj (lista1)

[„Zara”, „Lupe”, „Hong”, „Alberto”, „Jake”, „Huey”, „Dewey”, „Louie”, „Nader”, „Bubba”]

Easy Parcheesi, nie?

Usuwanie elementów listy Python

Python oferuje metodę remove (), dzięki czemu możesz usunąć dowolną wartość z listy. Jeśli element znajduje się na liście wiele razy, usuwane jest tylko pierwsze wystąpienie. Na przykład poniższy kod pokazuje listę liter z literą C powtórzoną kilka razy. Następnie kod używa liter.remove („C”), aby usunąć literę C z listy:

# Usuń „C” z listy.
letters.remove („C”)

# Pokaż mi nową listę.
drukuj (litery)

Gdy faktycznie wykonasz ten kod, a następnie wydrukujesz listę, zobaczysz, że usunięto tylko pierwszą literę C:

[„A”, „B”, „D”, „C”, „E”, „C”]

Jeśli musisz usunąć cały element, możesz użyć pętli while, aby powtórzyć .remove, dopóki element będzie nadal na liście. Na przykład ten kod powtarza .remove, dopóki „C” nadal znajduje się na liście.

# Utwórz listę ciągów.
litery = [„A”, „B”, „C”, „D”, „C”, „E”, „C”]

Jeśli chcesz usunąć element na podstawie jego pozycji na liście, użyj pop () z numerem indeksu zamiast remove () z wartością. Jeśli chcesz usunąć ostatni element z listy, użyj pop () bez numeru indeksu.

Na przykład poniższy kod tworzy listę, jeden wiersz usuwa pierwszy element (0), a drugi usuwa ostatni element (pop () bez niczego w nawiasach). Drukowanie listy pokazuje, że te dwa elementy zostały usunięte:

# Utwórz listę ciągów.
litery = [„A”, „B”, „C”, „D”, „E”, „F”, „G”]
 
# Usuń pierwszy element.
liter.pop (0)
# Usuń ostatni element.
letters.pop ()
 
# Pokaż mi nową listę.
drukuj (litery)

Uruchomienie kodu pokazuje, że usunięcie pierwszego i ostatniego elementu rzeczywiście działało:

[„B”, „C”, „D”, „E”, „F”]

Po usunięciu () elementu z listy można zapisać kopię tej wartości w pewnej zmiennej. Na przykład ten obraz pokazuje taki sam kod jak powyżej. Przechowuje jednak kopie tego, co zostało usunięte, w zmiennych o nazwach first_removed i last_removed. Na końcu drukuje listę Python, a także pokazuje, które litery zostały usunięte.

usuń elementy z listy Python

Python oferuje także polecenie del (skrót od delete), które usuwa dowolny element z listy na podstawie jego numeru indeksu (pozycji). Ale znowu musisz pamiętać, że pierwszy element to zero. Załóżmy, że uruchomiłeś następujący kod, aby usunąć pozycję 2 z listy:

# Utwórz listę ciągów.
litery = [„A”, „B”, „C”, „D”, „E”, „F”, „G”]
 
# Usuń element pod 2.
del liter [2]
 
drukuj (litery)

Uruchomienie tego kodu powoduje ponowne wyświetlenie listy w następujący sposób. Litera C została usunięta, co jest poprawną pozycją do usunięcia, ponieważ litery są ponumerowane 0, 1, 2, 3 itd.

[„A”, „B”, „D”, „E”, „F”, „G”]

Możesz także użyć del, aby usunąć całą listę. Po prostu nie używaj nawiasów kwadratowych i numeru indeksu. Na przykład poniższy kod tworzy listę, a następnie ją usuwa. Próba wydrukowania listy po usunięciu powoduje błąd, ponieważ lista nie istnieje już podczas wykonywania instrukcji print ().

usuń listę Python

Czyszczenie listy Python

Jeśli chcesz usunąć zawartość listy, ale nie samą listę, użyj .clear (). Lista wciąż istnieje; jednak nie zawiera żadnych elementów. Innymi słowy, jest to pusta lista. Poniższy kod pokazuje, jak możesz to przetestować. Uruchomienie kodu wyświetla [] na końcu, co oznacza, że ​​lista jest pusta:

# Utwórz listę ciągów.
litery = [„A”, „B”, „C”, „D”, „E”, „F”, „G”]
 
# Wyczyść listę wszystkich wpisów.
letters.clear ()
 
# Pokaż mi nową listę.
drukuj (litery)

[]

Liczenie, ile razy element pojawia się na liście w języku Python

Możesz użyć metody count () Pythona, aby policzyć, ile razy element pojawia się na liście. Podobnie jak w przypadku innych metod list, składnia jest prosta:

listname.count (x)

Zamień nazwę listy na nazwę listy, a x na wartość, której szukasz (lub nazwę zmiennej zawierającej tę wartość).

Kod na obrazku poniżej zlicza, ile razy litera B pojawia się na liście, używając literału B w nawiasach .count (). Ten sam kod liczy również liczbę stopni C, ale ta wartość została zapisana w zmiennej tylko po to, aby pokazać różnicę w składni. Obie liczby działały, jak widać na wyjściu programu na dole. Dodano jedną, aby policzyć F, nie używając żadnych zmiennych. Litery F zostały policzone bezpośrednio w kodzie, który wyświetla komunikat. Nie ma ocen F, więc zwraca zero, jak widać na wydruku.

policz elementy listy Python

Podczas próby łączenia liczb i ciągów w celu utworzenia wiadomości pamiętaj, że musisz przekonwertować liczby na ciągi za pomocą funkcji str (). W przeciwnym razie pojawi się błąd, który brzmi następująco: może tylko połączyć str (nie „int”) z str. W tym komunikacie int jest skrótem od liczby całkowitej, a str jest skrótem od łańcucha.

Znajdowanie indeksu elementu listy Python

Python oferuje metodę .index (), która zwraca liczbę wskazującą pozycję, na podstawie numeru indeksu, pozycji na liście. Składnia jest następująca:

listname.index (x)

Jak zawsze zamień nazwę listy na nazwę listy, którą chcesz przeszukać. Zamień x na to, czego szukasz (jak zawsze dosłownie lub jako nazwę zmiennej). Oczywiście nie ma gwarancji, że element znajduje się na liście, a nawet jeśli tak jest, nie ma gwarancji, że element znajduje się na liście tylko raz. Jeśli elementu nie ma na liście, występuje błąd. Jeśli element znajduje się na liście wiele razy, zwracany jest indeks pierwszego pasującego elementu.

Poniższy obraz pokazuje przykład, w którym program ulega awarii w linii f_index = grades.index (look_for), ponieważ na liście nie ma litery F.

Indeks pozycji listy w Pythonie

Łatwym sposobem obejścia tego problemu jest użycie instrukcji if, aby sprawdzić, czy element znajduje się na liście, zanim spróbujesz uzyskać jego numer indeksu. Jeśli elementu nie ma na liście, wyświetl komunikat informujący o tym. W przeciwnym razie uzyskaj numer indeksu i pokaż go w wiadomości. Kod ten jest następujący:

# Utwórz listę ciągów.
stopnie = [„C”, „B”, „A”, „D”, „C”, „B”, „C”]
# Zdecyduj, czego szukać
look_for = "F"
# Sprawdź, czy pozycja znajduje się na liście.
jeśli look_for w ocenach:
    # Jeśli jest na liście, pobierz i pokaż indeks.
    print (str (look_for) + ”znajduje się w indeksie” + str (grades.index (look_for)))
jeszcze:
    # Jeśli nie ma go na liście, nie próbuj nawet szukać numeru indeksu.
    print (str (look_for) + "nie ma na liście.")

Alfabetyczne i sortowanie list w języku Python

Python oferuje metodę sort () do sortowania list. W najprostszej formie alfabetycznie elementy na liście (jeśli są ciągami znaków). Jeśli lista zawiera liczby, są one sortowane od najmniejszych do największych. Dla takiego prostego sortowania wystarczy użyć sort () z pustymi nawiasami:

listname.sort ()

Zastąp listname nazwą swojej listy. Poniższy obraz pokazuje przykład z wykorzystaniem listy ciągów i listy liczb. W tym przykładzie dla każdej z nich utworzono nową listę, przypisując każdą posortowaną listę do nowej nazwy. Następnie kod drukuje zawartość każdej posortowanej listy.

sortuj listę Python

Jeśli twoja lista zawiera ciągi znaków z kombinacją wielkich i małych liter, a wyniki sortowania nie wyglądają dobrze, spróbuj zastąpić .sort () przez .sort (key = lambda s: s.lower ()), a następnie ponowne uruchomienie kodu.

Daty są nieco trudniejsze, ponieważ nie można ich po prostu wpisać jako ciągów, takich jak „31.12.2020”. Muszą być typem danych daty, aby poprawnie sortować. Oznacza to użycie modułu datetime i metody date () do zdefiniowania każdej daty. Możesz dodać daty do listy, tak jak każdą inną listę. Na przykład w poniższym wierszu kod tworzy listę czterech dat, a kod jest w porządku.

daty = [dt.date (2020,12,31), dt.date (2019,1,31), dt.date (2018,2,28), dt.date (2020,1,1)]

Komputer na pewno nie będzie miał nic przeciwko, jeśli utworzysz listę w ten sposób. Ale jeśli chcesz, aby kod był bardziej czytelny dla ciebie lub innych programistów, możesz utworzyć i dołączyć każdą datę, pojedynczo, więc po prostu łatwiej jest zobaczyć, co się dzieje, więc nie masz radzić sobie z tyloma przecinkami w jednym wierszu kodu. Poniższy obraz pokazuje przykład, w którym utworzono pustą listę o nazwie lista danych:

lista danych = []
wyświetlać daty w Pythonie

Następnie do listy dołączano jedną datę za pomocą składni dt.date (rok, miesiąc, dzień).

Po utworzeniu listy kod używa datelist.sort () do sortowania ich w porządku chronologicznym (od najwcześniejszego do najnowszego). Nie musisz używać print (listy danych) w tym kodzie, ponieważ ta metoda wyświetla daty z dołączonymi informacjami o typie danych, jak poniżej:

[datetime.date (2018, 2, 28), datetime.date (2019, 1, 31), datetime.date (2020, 1, 1), datetime.date (2020, 12, 31)]

Nie najłatwiejsza lista do przeczytania. Dlatego zamiast drukować całą listę za pomocą jednej instrukcji print (), możesz przeglądać każdą datę na liście i drukować każdą sformatowaną za pomocą ciągu f% m /% d /% Y. Wyświetla każdą datę w osobnym wierszu w formacie mm / dd / rrrr

Jeśli chcesz sortować elementy w odwrotnej kolejności, umieść reverse = True w nawiasach sort () (i nie zapomnij, aby pierwsza litera była pisana wielkimi literami). Poniższy obraz pokazuje przykłady sortowania wszystkich trzech list w kolejności malejącej (odwrotnej) przy użyciu reverse = True.

sortuj informacje na liście Python w odwrotnej kolejności

Odwracanie listy Python

Możesz także odwrócić kolejność elementów na liście, używając metody .reverse. To nie jest to samo, co sortowanie w odwrotnej kolejności, ponieważ podczas sortowania w odwrotnej kolejności nadal sortujesz: Z – A dla ciągów, od największej do najmniejszej dla liczb, a od najwcześniejszej do daty. Kiedy odwracasz listę, po prostu odwracasz elementy na liście, bez względu na ich kolejność, bez próby sortowania ich w jakikolwiek sposób.

Poniższy kod pokazuje przykład, w którym odwraca się kolejność nazw na liście, a następnie drukuje listę. Dane wyjściowe pokazują elementy listy odwrócone od ich pierwotnej kolejności:

# Utwórz listę ciągów.
names = [„Zara”, „Lupe”, „Hong”, „Alberto”, „Jake”]
# Odwróć listę
names.reverse ()
# Wydrukuj listę
drukuj (nazwiska)
 
[„Jake”, „Alberto”, „Hong”, „Lupe”, „Zara”]

Kopiowanie listy Python

Jeśli kiedykolwiek będziesz potrzebować pracować z kopią listy, użyj metody .copy (), aby nie zmieniać oryginalnej listy. Na przykład poniższy kod jest podobny do poprzedniego, z wyjątkiem tego, że zamiast odwracać kolejność oryginalnej listy, tworzysz kopię listy i odwracasz ją. Wydruk zawartości każdej listy pokazuje, jak pierwsza lista jest nadal w oryginalnej kolejności, a druga jest odwrócona:

# Utwórz listę ciągów.
names = [„Zara”, „Lupe”, „Hong”, „Alberto”, „Jake”]
 
# Utwórz kopię listy
backward_names = names.copy ()
# Odwróć kopię
backward_names.reverse ()
 
# Wydrukuj listę
drukuj (nazwiska)
print (nazwy wstecz)
 
[„Zara”, „Lupe”, „Hong”, „Alberto”, „Jake”]
[„Jake”, „Alberto”, „Hong”, „Lupe”, „Zara”]

W celu uzyskania dalszych informacji w poniższej tabeli podsumowano metody, których się nauczyłeś.