1. ProgramovaniePhythonAko používať funkcie Lambda v Pythone

Autor: Alan Shovic, John Shovic

Python podporuje koncept anonymných funkcií, tiež nazývaných funkcie lambda. Anonymná časť názvu je založená na skutočnosti, že funkcia nemusí mať meno (ale môže mať jedno, ak ho chcete). Časť lambda je založená na použití kľúčového slova lambda na ich definovanie v Pythone. Lambda je tiež 11. písmeno gréckej abecedy.

Ale hlavný dôvod, prečo sa meno používa v Pythone, je ten, že výraz lambda sa používa na opis anonymných funkcií v kalkulu. Teraz, keď sme si to objasnili, môžete pomocou týchto informácií vyvolať fascinujúcu konverzáciu na kancelárskych večierkoch.

Minimálna syntax na definovanie výrazu lambda (bez mena) s Pythonom je:

Lambda argumenty: výraz

Pri použití:

  • Nahraďte argumenty údajmi, ktoré sa prenášajú do výrazu. Nahraďte výraz výrazom (vzorcom), ktorý definuje, čo sa má lambda vrátiť.

Bežným príkladom použitia tejto syntaxe je, keď sa snažíte zoradiť textové reťazce, v ktorých niektoré názvy začínajú veľkými písmenami a niektoré začínajú malými písmenami, ako napríklad v týchto názvoch:

Adams, Ma, diMeola, Zandusky

Predpokladajme, že napíšete nasledujúci kód, aby ste mená umiestnili do zoznamu, usporiadali ich a potom zoznam vytlačili takto:

names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort ()
print (názvy)

Výstup z tohto je:

['Adams', 'Ma', 'Zandusky', 'diMeola']

Mať diMeolu po Zanduskom sa zdá byť pre niektorých začiatočníkov nesprávne. Počítače však veci nevidia vždy tak, ako to robíme. (V skutočnosti nič „nevidia“, pretože nemajú oči ani mozog… ale to nie je dôležité.) Dôvodom, prečo diMeola prichádza po Zanduskom, je to, že druh je založený na ASCII, čo je systém, v ktorom každý znak je reprezentovaný číslom.

Všetky malé písmená majú čísla, ktoré sú vyššie ako veľké písmená. Preto pri triedení prichádzajú všetky slová začínajúce malými písmenami za slová začínajúce malými písmenami. Pokiaľ nič iné, zaručuje to minimálne hmm.

Aby ste v týchto veciach pomohli, metóda Python sort () vám umožňuje zahrnúť do zátvoriek výraz key = expression, kde môžete povedať, ako sa má usporiadať. Syntax je:

.sort (key = transform)

Transformačná časť je určitá variácia triedených údajov. Ak budete mať šťastie a jedna z vstavaných funkcií, ako je len (pre dĺžku), bude pracovať pre vás, môžete ju použiť namiesto transformácie, napríklad takto:

names.sort (kľúč = ľan)

Bohužiaľ, dĺžka reťazca nepomáha pri abecednom písaní. Keď to spustíte, poradie sa ukáže:

['Ma', 'Adams', 'diMeola', 'Zandusky']

Zoradenie ide od najkratšieho reťazca (ten s najmenšími znakmi) po najdlhší reťazec. Momentálne to nie je užitočné.

Nemôžete písať key = Lower alebo key = upper, aby ste založili zoradenie pre všetky malé alebo veľké písmená, pretože spodné a horné nie sú vstavané funkcie (ktoré môžete veľmi rýchlo overiť pomocou zabudovaného python 3.7) funkcie).

Namiesto zabudovanej funkcie môžete použiť vlastnú funkciu, ktorú si sami definujete pomocou def. Môžete napríklad vytvoriť funkciu s názvom Lower (), ktorá prijíma reťazec a vracia tento reťazec so všetkými jeho písmenami prevedenými na malé písmená. Tu je funkcia:

def nižšie (akákoľvek šnúra):
"" "Skonvertuje reťazec na všetky malé písmená" ""
return anystring.lower ()

Nižšie meno je tvorené a akákoľvek šnúra je zástupným znakom pre akýkoľvek reťazec, ktorý mu v budúcnosti odovzdáte. Návrat anystring.lower () vráti reťazec prevedený na malé písmená pomocou metódy .lower () objektu str (string). (Prečítajte si viac informácií o metódach reťazcov Python.)

V zátvorkách sort () nemôžete použiť key = Lower, pretože Lower () nie je vstavanou funkciou. Je to metóda ... nie je to isté. Dosť nepríjemné so všetkými týmito heslámi.

Predpokladajme, že túto funkciu zapíšete do bunky Jupyter alebo do súboru .py. Potom zavoláte funkciu pomocou niečoho ako tlač (malé písmená („Zandusky“)). Ako vidíte, výstup je ten reťazec prevedený na malé písmená, ako vidíte nižšie.

užívateľská funkcia Lower () v Pythone

Dobre, takže teraz máte vlastnú funkciu na prevod ľubovoľného reťazca na malé písmená. Ako ich používate ako kľúč na triedenie? Jednoduché, použite key = transform to isté ako predtým, ale transformáciu nahraďte svojím vlastným názvom funkcie. Táto funkcia sa nazýva malé písmená, takže by ste mali používať .sort (key = malé písmená), ako je uvedené v nasledujúcom texte:

def. malé písmená (akékoľvek šnúry):
"" "Skonvertuje reťazec na všetky malé písmená" ""
return anystring.lower ()
 
names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort (kľúč = lowercaseof)

Spustenie tohto kódu na zobrazenie zoznamu mien ich uvedie do správneho poradia, pretože je založené na usporiadaní reťazcov, ktoré sú všetky malé. Výstup je rovnaký ako predtým, pretože iba triedenie, ktoré sa uskutočnilo za scénami, používalo malé písmená. Pôvodné údaje sú stále v pôvodných veľkých a malých písmenách.

„Adams“, „diMeola“, „Ma“, „Zandusky“

Ak ste po prečítaní toho všetkého stále hore a ste pri vedomí, môžete si myslieť: „Dobre, vyriešil ste problém s triedením. Ale myslel som, že tu hovoríme o funkciách lambda. Kde je funkcia lambda? “Zatiaľ neexistuje funkcia lambda.

Je to však dokonalý príklad toho, kde by ste mohli použiť funkciu lambda, pretože funkcia Python, ktorú voláte, malá písmená (), robí všetku svoju prácu iba jedným riadkom kódu: return anystring.lower ().

Ak vaša funkcia môže robiť svoju vec jednoduchým jednoriadkovým výrazom, ako je tento, môžete vynechať def a názov funkcie a jednoducho použiť túto syntax:

lambda parametre: výraz

Nahraďte parametre jedným alebo viacerými názvami parametrov, ktoré si sami vytvoríte (názvy v zátvorkách za def a názov funkcie v bežnej funkcii). Nahraďte výraz tým, čo chcete, aby sa funkcia vrátila bez návratu slova. V tomto príklade by teda kľúč, ktorý používa lambda výraz, bol:

lambda anystring: anystring.lower ()

Teraz môžete vidieť, prečo je to anonymná funkcia. Celý prvý riadok s názvom funkcie casecase () bol odstránený. Výhodou použitia výrazu lambda je, že vôbec nepotrebujete externú vlastnú funkciu. Potrebujete iba parameter, za ktorým nasleduje dvojbodka a výraz, ktorý hovorí, čo sa má vrátiť.

Obrázok nižšie zobrazuje kompletný kód a výsledok jeho spustenia. Získate správnu objednávku zoradenia bez potreby externých funkcií zákazníka, ako je napríklad casecase (). Ako kľúč na triedenie môžete použiť anystring: anystring.lower () (za slovom lambda).

Výraz Python lambda

Dodajme tiež, že akákoľvek reťazec je dlhší názov parametra, ako by používala väčšina Pythonistas. Ľudia v Pythone majú radi krátke mená, dokonca aj názvy s jedným písmenom. Napríklad môžete nahradiť ľubovoľnú šnúru znakom s (alebo iným písmenom), ako v nasledujúcom texte, a kód bude fungovať presne rovnako:

names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort (key = lambda s: s.lower ())
print (názvy)

Na začiatku tejto tirade sa už spomínalo, že funkcia lambda nemusí byť anonymná. Môžete im dať mená a volať ich rovnako ako iné funkcie.

Napríklad tu je funkcia lambda pomenovaná mena, ktorá berie ľubovoľné číslo a vracia reťazec vo formáte meny (to znamená, že s úvodným znakom dolára je čiarka medzi tisíckami a dvoma číslicami za haliere):

mena = lambda n: f "$ {n:,. 2f}"

Tu je jedno pomenované percento, ktoré vynásobí akékoľvek číslo, ktoré mu pošlete, číslom 100 a na konci sa zobrazí znakom dve percentá:

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

Nasledujúci obrázok zobrazuje príklady oboch funkcií definovaných v hornej časti bunky Jupyter. Potom niekoľko tlačových príkazov volá funkcie podľa mena a odovzdá im niektoré vzorové údaje. Každý príkaz print () zobrazuje číslo v požadovanom formáte.

Čísla formátovania v Pythone

Dôvod, prečo ich môžete definovať ako jednoriadkové lambdy, je ten, že môžete robiť všetku prácu na jednom riadku, f "$ {n:,. 2f}" pre prvý a f "{n: .2%}" pre druhý. Ale to, že to dokážete, neznamená, že musíte. Pravidelné funkcie môžete používať aj nasledovne:

# Zobraziť číslo vo formáte meny.
def. mena (n):
návrat f "$ {n:,. 2f}"
 
def. percento (n):
# Zobraziť číslo v percentuálnom formáte.
návrat f "{n: .2%}"

Pri tejto dlhšej syntaxi môžete odovzdať aj ďalšie informácie. Napríklad môžete predvoliť formát zarovnaný doprava v rámci určitej šírky (povedzme 15 znakov), aby všetky čísla vychádzali zarovnané doprava na rovnakú šírku. Obrázok ukazuje túto zmenu týchto dvoch funkcií.

Funkcia formátovania Pythonu s pevnou šírkou

Na obrázku vyššie je druhý parameter voliteľný a v prípade vynechania sa predvolene nastaví na 15. Ak to tak nazývate:

print (mena (9999))

... získate výplň vo výške 9 999,00 dolárov s dostatočným počtom medzier na ľavej strane, aby bola šírka 15 znakov. Ak to namiesto toho nazývate takto:

print (mena (9999,20)

... stále máte 9 999,00 dolárov, ale sú vyplnené dostatočným priestorom vľavo, aby bola šírka 20 znakov.

Vyššie uvedená hodnota .ljust () je metóda zabudovaného reťazca Python, ktorá vypĺňa ľavú stranu reťazca dostatočnými medzerami na to, aby sa stala špecifikovanou šírkou. Na pravú stranu je tiež metóda rjust (). Môžete tiež určiť iný znak ako medzeru. Google python 3 ljust rjust, ak potrebujete viac informácií.

Takže tu to máte, schopnosť vytvárať si vlastné vlastné funkcie v Pythone. V skutočnom živote to, čo chcete urobiť, je vždy, keď zistíte, že potrebujete prístup k rovnakému kusu kódu - k rovnakému kúsku prihlásenia - znova a znova vo svojej aplikácii, jednoducho tento skopírovaný alebo kopírovaný obsah jednoducho nekopírujte / prilepte. kód znova a znova. Namiesto toho vložte celý tento kód do funkcie, ktorú môžete volať menom.

Ak sa teda rozhodnete zmeniť reťazec v jazyku Python, nemusíte prechádzať svojou aplikáciou, aby ste našli všetky miesta, ktoré je potrebné zmeniť. Jednoducho to zmeňte vo funkcii, kde je všetko definované na jednom mieste.

  1. ProgrammingPythonAko definovať a používať zoznamy Python

Autor: Alan Shovic, John Shovic

Najjednoduchší zber údajov v Pythone je zoznam. Zoznam je akýkoľvek zoznam údajových položiek oddelených čiarkami v hranatých zátvorkách. Zvyčajne priradíte meno zoznamu Python pomocou znamienka =, rovnako ako pri premenných. Ak zoznam obsahuje čísla, nepoužívajte okolo nich úvodzovky. Tu je napríklad zoznam výsledkov testov:

skóre = [88, 92, 78, 90, 98, 84]

Ak zoznam obsahuje reťazce, mali by sa tieto reťazce, ako vždy, uzavrieť do jednoduchých alebo dvojitých úvodzoviek, ako v tomto príklade:

Ak chcete zobraziť obsah zoznamu na obrazovke, môžete ho vytlačiť rovnako, ako by ste tlačili akúkoľvek bežnú premennú. Napríklad spustenie tlače (študenti) vo vašom kóde po definovaní tohto zoznamu to zobrazí na obrazovke.

['Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

To nemusí byť presne to, čo ste mali na mysli. Ale nebojte sa, Python ponúka veľa skvelých spôsobov, ako získať prístup k údajom v zoznamoch a zobraziť ich, ako sa vám páči.

Odkazovanie položiek zoznamu Python podľa pozície

Každá položka v zozname má číslo pozície začínajúce nulou, aj keď nevidíte žiadne čísla. Na ktorúkoľvek položku v zozname môžete podľa jej čísla odkazovať pomocou názvu zoznamu, za ktorým nasleduje číslo v hranatých zátvorkách. Inými slovami, použite túto syntax:

listname [x]

Nahraďte názov zoznamu menom názvu zoznamu, ku ktorému sa chcete dostať, a písmeno x nahraďte požadovaným počtom pozícií. Pamätajte, že prvou položkou je vždy číslo nula, nie jedna. Napríklad v prvom riadku nižšie definujem zoznam s názvom študentov a potom vytlačím číslo položky nula z tohto zoznamu. Výsledkom je, že pri vykonávaní kódu je zobrazené meno Mark.
students = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
print (študentov [0])
značka

Pri čítaní položiek prístupového zoznamu používajú odborníci slovo pred číslom. Napríklad, študenti [0] sa budú hovoriť ako študenti pod nulou.

V nasledujúcom príklade je uvedený zoznam s názvom skóre. Funkcia print () vytlačí číslo pozície posledného skóre v zozname, ktoré je 4 (pretože prvé je vždy nula).

skóre = [88, 92, 78, 90, 84]
print (skóre [4])
84

Ak sa pokúsite získať prístup k položke zoznamu, ktorá neexistuje, zobrazí sa chyba „index mimo rozsah“. Indexová časť je odkaz na číslo v hranatých zátvorkách. Napríklad obrázok nižšie ukazuje malý experiment v notebooku Jupyter, kde bol vytvorený zoznam skóre a potom bol pokus o vytlačenie skóre [5].

Zlyhal a vygeneroval chybu, pretože neexistujú žiadne skóre [5]. Existujú iba skóre [0], skóre [1], skóre [2], skóre [3] a skóre [4], pretože sčítanie sa vždy začína na nule, pričom prvé v zozname je prvé.

Rozsah indexu Python

Opakovanie zoznamu Python

Na prístup ku každej položke v zozname stačí použiť slučku for s touto syntaxou:

pre x v zozname:

Nahraďte x názvom premennej podľa vášho výberu. Nahraďte zoznam názvom zoznamu. Jednoduchým spôsobom, ako zabezpečiť čitateľnosť kódu, je použitie názvu množiny v množnom čísle (napríklad študenti, skóre). Potom môžete pre meno premennej použiť jedinečné meno (študent, skóre). Pri tomto postupe tiež nemusíte používať čísla indexov (čísla v hranatých zátvorkách). Napríklad nasledujúci kód vytlačí každé skóre v zozname skóre:

pre skóre v skóre:
print (skóre)

Nezabudnite vždy odsadiť kód, ktorý sa má vykonať v rámci slučky. Tento obrázok predstavuje úplnejší príklad, kde môžete vidieť výsledok spustenia kódu v notebooku Jupyter.

Opakovanie zoznamu Python

Zistenie, či zoznam Python obsahuje položku

Ak chcete, aby váš kód skontroloval obsah zoznamu a zistil, či už obsahuje nejakú položku, použite v listname v príkaze if alebo v premennej.

Napríklad kód na obrázku nižšie vytvorí zoznam mien. Potom si dve premenné uložia výsledky prehľadávania mien Anita a Bob. Pri tlači obsahu každej premennej sa zobrazí pravda pre tú, v ktorej je meno (Anita) v zozname. Test na zistenie, či je Bob v zozname, dokazuje hodnotu False.

Zistenie, či je položka v zozname Python

Získanie dĺžky zoznamu Python

Na určenie počtu položiek v zozname použite funkciu len () (krátka dĺžka). Do zátvoriek vložte názov zoznamu. Zadajte napríklad nasledujúci kód do poznámkového bloku Jupyter alebo do príkazového riadku Python alebo do čohokoľvek:

students = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
print (ľan (študenti))

Spustenie tohto kódu vytvorí tento výstup:

5

V zozname je skutočne päť položiek, aj keď posledná je vždy o jednu menšia ako číslo, pretože Python začína počítať od nuly. Posledná z nich, Sandy, sa teda týka študentov [4] a nie študentov [5].

Pripája sa položka na koniec zoznamu Python

Ak chcete, aby váš kód Python pridal novú položku na koniec zoznamu, použite metódu .append () s hodnotou, ktorú chcete pridať do zátvoriek. V úvodzovkách môžete použiť názov premennej alebo doslovnú hodnotu.

Napríklad na nasledujúcom obrázku riadok, ktorý číta students.append („Goober“), pridá do zoznamu meno Goober. Riadok, ktorý číta students.append (new_student), pridá do zoznamu akékoľvek meno uložené v premennej s názvom new_student. Metóda .append () sa vždy pridá na koniec zoznamu. Takže pri tlači zoznamu uvidíte tieto dve nové mená na konci.

Zoznam pripojení Pythonu

Pomocou testu môžete zistiť, či je položka v zozname, a potom ju pripojiť, len ak položka už neexistuje. Napríklad nasledujúci kód nepridá názov Amber do zoznamu, pretože tento názov je už v zozname:

student_name = "Amanda"

#Ad student_name, ale iba ak už nie je v zozname.
ak student_name u študentov:
    print (student_name + "už v zozname")
else:
    students.append (student_name)
    print (student_name + "pridané do zoznamu")

Vloženie položky do zoznamu Python

Hoci metóda append () vám umožňuje pridať položku na koniec zoznamu, metóda insert () vám umožňuje pridať položku do zoznamu na ľubovoľnej pozícii. Syntax pre insert () je

listname.insert (pozícia, položka)

Nahraďte listname názvom zoznamu, umiestnite pozíciu, na ktorú chcete vložiť položku (napríklad 0, aby sa stala prvou položkou, 1, aby sa stala druhou položkou atď.). Nahraďte položku hodnotou alebo názvom premennej, ktorá obsahuje hodnotu, ktorú chcete vložiť do zoznamu.

Napríklad nasledujúci kód robí Lupe prvou položkou v zozname:

#Vytvorte zoznam reťazcov (mien).
students = ["Mark", "Amber", "Todd", "Anita", "Sandy"]

student_name = "Lupe"
# Pridajte meno študenta na začiatok zoznamu.
students.insert (0, student_name)

#Zobraziť nový zoznam.
print (študentov)

Ak spustíte kód, tlač (študenti) zobrazí zoznam po vložení nového názvu nasledovne:

['Lupe', 'Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

Zmena položky v zozname Python

Položku v zozname môžete zmeniť pomocou operátora = priradenie (pozrite sa na týchto bežných operátorov Pythonu) rovnako ako v prípade premenných. Nezabudnite uviesť číslo indexu v hranatých zátvorkách položky, ktorú chcete zmeniť. Syntax je:

listname [index] = newValue

Nahraďte názov zoznamu názvom zoznamu; nahraďte index indexom (indexovým číslom) položky, ktorú chcete zmeniť; a nahraďte novú hodnotu tým, čo chcete vložiť do položky zoznamu. Pozrite sa napríklad na tento kód:

#Vytvorte zoznam reťazcov (mien).
students = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
študenti [3] = "Hobart"
print (študentov)

Keď spustíte tento kód, výstup je nasledujúci, pretože meno Anity bolo zmenené na Hobart.

['Mark', 'Amber', 'Todd', 'Hobart', 'Sandy']

Kombinácia zoznamov Python

Ak máte dva zoznamy, ktoré chcete spojiť do jedného zoznamu, použite funkciu rozšírenia () so syntaxou:

original_list.extend (additional_items_list)

Vo svojom kóde nahraďte original_list názvom zoznamu, do ktorého budete pridávať nové položky zoznamu. Nahraďte add_items_list názvom zoznamu, ktorý obsahuje položky, ktoré chcete pridať do prvého zoznamu. Tu je jednoduchý príklad použitia zoznamov s názvom list1 a list2. Po vykonaní list1.extend (list2) prvý zoznam obsahuje položky z oboch zoznamov, ako môžete vidieť na výstupe príkazu print () na konci.

# Vytvorte dva zoznamy mien.
list1 = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
list2 = ["Huey", "Dewey", "Louie", "Nader", "Bubba"]

# Pridajte zoznam2 mien do zoznamu1.
list1.extend (Hárok2)

# Zoznam tlače 1.
print (Hárok1)

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

Ľahké Parcheesi, nie?

Odstránenie položiek zoznamu Python

Python ponúka metódu remove (), takže môžete zo zoznamu odstrániť akúkoľvek hodnotu. Ak je položka v zozname viackrát, odstráni sa iba prvý výskyt. Napríklad nasledujúci kód zobrazuje zoznam písmen s písmenom C niekoľkokrát opakovaným. Potom kód použije písmeno.remove („C“) na odstránenie písmena C zo zoznamu:

"Odstrániť" C "zo zoznamu.
letters.remove ( "C")

#Zobraziť nový zoznam.
print (písmená)

Keď tento kód skutočne spustíte a potom vytlačíte zoznam, uvidíte, že bolo odstránené iba prvé písmeno C:

['A', 'B', 'D', 'C', 'E', 'C']

Ak potrebujete odstrániť všetku položku, môžete použiť opakovanie cyklu, kým položka stále zostáva v zozname. Napríklad tento kód opakuje .remove, pokiaľ je v zozname stále písmeno „C“.

#Vytvorte zoznam reťazcov.
písmená = ["A", "B", "C", "D", "C", "E", "C"]

Ak chcete odstrániť položku na základe jej umiestnenia v zozname, použite radšej pop () s indexovým číslom, než odstrániť () s hodnotou. Ak chcete odstrániť poslednú položku zo zoznamu, použite pop () bez indexového čísla.

Napríklad nasledujúci kód vytvorí zoznam, jeden riadok odstráni prvú položku (0) a ďalší odstráni poslednú položku (pop () bez zátvoriek). Tlač zoznamu ukazuje, že tieto dve položky boli odstránené:

#Vytvorte zoznam reťazcov.
písmená = ["A", "B", "C", "D", "E", "F", "G"]
 
#Odstráňte prvú položku.
letters.pop (0)
#Odstráňte poslednú položku.
letters.pop ()
 
#Zobraziť nový zoznam.
print (písmená)

Spustenie kódu ukazuje, že popping prvej a poslednej položky skutočne fungoval:

['B', 'C', 'D', 'E', 'F']

Keď vyskočíte () položku zo zoznamu, môžete uložiť kópiu tejto hodnoty do nejakej premennej. Napríklad tento obrázok zobrazuje rovnaký kód ako vyššie. Uloží však kópie odstránených položiek do premenných s názvom first_removed a last_removed. Na konci vytlačí zoznam Python a tiež ukazuje, ktoré písmená boli odstránené.

odstrániť položky zo zoznamu Python

Python tiež ponúka príkaz del (short for delete), ktorý vymaže ktorúkoľvek položku zo zoznamu na základe jej indexového čísla (pozície). Ale opäť si musíte uvedomiť, že prvá položka je nula. Povedzme, že spustením nasledujúceho kódu odstránite číslo položky 2 zo zoznamu:

# Vytvorte zoznam reťazcov.
písmená = ["A", "B", "C", "D", "E", "F", "G"]
 
# Odstrániť položku sub 2.
del písmená [2]
 
print (písmená)

Spustením tohto kódu sa znova zobrazí zoznam. Písmeno C bolo vymazané, čo je správna položka na odstránenie, pretože písmená sú očíslované 0, 1, 2, 3 atď.

['A', 'B', 'D', 'E', 'F', 'G']

Môžete tiež použiť del na odstránenie celého zoznamu. Nepoužívajte hranaté zátvorky a indexové číslo. Napríklad kód, ktorý vidíte nižšie, vytvorí zoznam a potom ho vymaže. Pokus o vytlačenie zoznamu po vymazaní spôsobí chybu, pretože tento zoznam po spustení príkazu print () už neexistuje.

zmazať zoznam Python

Vymazanie zoznamu Python

Ak chcete odstrániť obsah zoznamu, ale nie samotný zoznam, použite .clear (). Zoznam stále existuje; neobsahuje však žiadne položky. Inými slovami, je to prázdny zoznam. Nasledujúci kód ukazuje, ako by ste to mohli otestovať. Spustenie kódu sa zobrazí na konci [], čo znamená, že zoznam je prázdny:

# Vytvorte zoznam reťazcov.
písmená = ["A", "B", "C", "D", "E", "F", "G"]
 
# Vymazať zoznam všetkých záznamov.
letters.clear ()
 
# Zobraziť nový zoznam.
print (písmená)

[]

Počítanie, koľkokrát sa položka objaví v zozname Python

Metódu Python count () môžete použiť na spočítanie, koľkokrát sa položka objaví v zozname. Podobne ako pri iných metódach zoznamu je syntax jednoduchá:

listname.count (x)

Nahraďte listname názvom vášho zoznamu a x hodnotou, ktorú hľadáte (alebo názvom premennej, ktorá obsahuje túto hodnotu).

Kód na obrázku nižšie počíta, koľkokrát sa písmeno B objaví v zozname, pričom použije literál B vo vnútri zátvoriek .count (). Rovnaký kód tiež počíta počet stupňov C, ale táto hodnota bola uložená v premennej len na zobrazenie rozdielu v syntaxi. Obidva počty fungovali, ako môžete vidieť na výstupe programu v dolnej časti. Jeden bol pridaný na výpočet F‘s, bez použitia akýchkoľvek premenných. F boli spočítané priamo v kóde, ktorý zobrazuje správu. Neexistujú žiadne známky stupňa F, takže sa vracia nula, ako môžete vidieť na výstupe.

počet položiek zoznamu Python

Keď sa snažíte spojiť čísla a reťazce do správy, nezabudnite, že pomocou funkcie str () musíte čísla previesť na reťazce. V opačnom prípade sa zobrazí chyba, ktorá znie niečo, čo môže iba zreťaziť str (nie „int“) str. V tejto správe je int skratka pre celé číslo a str je skratka pre reťazec.

Nájdenie indexu položky zoznamu Python

Python ponúka metódu .index (), ktorá vracia číslo označujúce pozíciu položky v zozname na základe indexového čísla. Syntax je:

listname.index (x)

Ako vždy, nahraďte listname názvom zoznamu, ktorý chcete vyhľadať. Nahraďte x to, čo hľadáte (ako doslovný názov alebo ako názov premennej, ako vždy). Samozrejme neexistuje žiadna záruka, že položka je v zozname, a aj keď je, neexistuje žiadna záruka, že položka je v zozname iba raz. Ak položka nie je v zozname, vyskytne sa chyba. Ak je položka v zozname viackrát, vráti sa index prvej zhodnej položky.

Nasledujúci obrázok ukazuje príklad, kde program havaruje na riadku f_index = stupně.index (look_for), pretože v zozname nie je F.

Index položky zoznamu Python

Jednoduchým spôsobom, ako obísť tento problém, je použiť príkaz if, aby ste zistili, či je položka v zozname predtým, ako sa pokúsite získať jej indexové číslo. Ak položka nie je v zozname, zobrazte správu, ktorá to hovorí. V opačnom prípade získajte indexové číslo a zobrazte ho v správe. Tento kód je nasledujúci:

# Vytvorte zoznam reťazcov.
známky = ["C", "B", "A", "D", "C", "B", "C"]
# Rozhodnite sa, čo hľadať
look_for = "F"
# Pozrite sa, či je položka v zozname.
ak look_for v stupňoch:
    # Ak je v zozname, získajte a zobrazte index.
    print (str (look_for) + "je v indexe" + str (známky.index (look_for)))
else:
    # Ak nie je v zozname, neskúšajte ani indexové číslo.
    print (str (look_for) + "nie je v zozname.")

Abecedný zoznam a triedenie zoznamov Python

Python ponúka metódu sort () pre triedenie zoznamov. Vo svojej najjednoduchšej podobe abecedne zoradí položky v zozname (ak ide o reťazce). Ak zoznam obsahuje čísla, sú usporiadané od najmenších po najväčšie. Pre takéto jednoduché triedenie stačí použiť sort () s prázdnymi zátvorkami:

listname.sort ()

Nahraďte listname názvom vášho zoznamu. Nasledujúci obrázok ukazuje príklad pomocou zoznamu reťazcov a zoznamu čísel. V príklade bol pre každý z nich vytvorený nový zoznam jednoducho priradením každého zoradeného zoznamu k novému názvu zoznamu. Potom kód vytlačí obsah každého zoradeného zoznamu.

Zoradiť Pythonov zoznam

Ak váš zoznam obsahuje reťazce s veľkými a malými písmenami a výsledky triedenia nevyzerajú správne, skúste nahradiť .sort () za .sort (key = lambda s: s.lower ()) a potom spustenie kódu znova.

Dátumy sú trochu zložitejšie, pretože ich nemôžete zadať iba ako reťazce, napríklad „31. 12. 2012“. Na správne zoradenie musia byť typ údajov dátumu. To znamená, že na definovanie každého dátumu sa použije modul datetime a metóda date (). Dátumy môžete do zoznamu pridať rovnako, ako akékoľvek iné zoznamy. Napríklad v nasledujúcom riadku kód vytvorí zoznam štyroch dátumov a kód je úplne v poriadku.

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

Ak vytvoríte zoznam týmto spôsobom, počítač určite nebude vadiť. Ale ak chcete, aby bol kód čitateľnejší pre seba alebo iných vývojárov, môžete vytvoriť a pripojiť každý dátum, jeden po druhom, takže len tak je trochu ľahšie zistiť, čo sa deje, a tak nemáte zaoberať sa toľkými čiarkami v jednom riadku kódu. Obrázok nižšie ukazuje príklad vytvorenia prázdneho zoznamu s názvom datelist:

datelist = []
zobraziť dátumy v Pythone

Potom bol do zoznamu pripojený jeden dátum v rovnakom čase pomocou syntaxe dt.date (rok, mesiac, deň).

Po vytvorení zoznamu kód použije datelist.sort () na ich zoradenie podľa chronologického poradia (najskôr od najnovšieho). V tomto kóde nemusíte používať tlač (datelist), pretože táto metóda zobrazuje dátumy spolu s informáciami o type údajov, napríklad:

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

Nie je to najjednoduchší zoznam na čítanie. Namiesto toho, aby ste tlačili celý zoznam jedným príkazom print (), môžete cyklicky prebehnúť každý dátum v zozname a vytlačiť každý z nich formátovaný pomocou f-string% m /% d /% Y. Každý dátum sa zobrazuje na samostatnom riadku v mm / dd / rrrr

Ak chcete zoradiť položky v opačnom poradí, do zátvoriek sort () vložte reťazec reverse = True (a nezabudnite urobiť veľké písmeno prvého písmena). Obrázok nižšie ukazuje príklady triedenia všetkých troch zoznamov v zostupnom (obrátenom) poradí pomocou reverznej = True.

Zoradiť informácie v zozname Python opačným spôsobom

Obrátenie zoznamu Pythonu

Poradie položiek v zozname môžete tiež obrátiť pomocou metódy reverz. Toto nie je to isté ako pri spätnom zoradení, pretože keď radíte vzad, stále ste v skutočnosti zoradení: Z – A pre reťazce, od najväčších po najmenšie, od najnovších po najnovšie. Keď zmeníte zoznam, jednoducho zmeníte položky v zozname, bez ohľadu na ich poradie, bez toho, aby ste sa ich nejako snažili zoradiť.

Nasledujúci kód zobrazuje príklad, v ktorom zmeníte poradie mien v zozname a potom vytlačíte zoznam. Výstup zobrazuje zoznam položiek obrátených z ich pôvodného poradia:

# Vytvorte zoznam reťazcov.
names = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
# Obrátiť zoznam
names.reverse ()
# Vytlačiť zoznam
print (názvy)
 
['Jake', 'Alberto', 'Hong', 'Lupe', 'Zara']

Kopírovanie zoznamu Python

Ak niekedy potrebujete pracovať s kópiou zoznamu, použite metódu .copy (), aby ste nezmenili pôvodný zoznam. Napríklad nasledujúci kód je podobný predchádzajúcemu kódu s tým rozdielom, že namiesto obrátenia poradia pôvodného zoznamu vytvoríte kópiu zoznamu a vrátite ho späť. Tlač obsahu každého zoznamu ukazuje, ako je prvý zoznam stále v pôvodnom poradí, zatiaľ čo druhý zoznam je obrátený:

# Vytvorte zoznam reťazcov.
names = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
 
# Vytvorte kópiu zoznamu
backward_names = names.copy ()
# Obrátiť kópiu
backward_names.reverse ()
 
# Vytlačiť zoznam
print (názvy)
print (backward_names)
 
['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake']
['Jake', 'Alberto', 'Hong', 'Lupe', 'Zara']

V nasledujúcej tabuľke sú zhrnuté metódy, o ktorých ste sa dozvedeli, pre budúce referencie.