Programovanie

Ako pracovať s dátovým typom zoznamu Python

Python je dodávaný s kolekciou zabudovaných dátových typov, ktoré uľahčujú bežné operácie hádania údajov. Medzi nimi jezoznam, jednoduchý, ale všestranný typ zbierky. V zozname Python môžete zoskupiť objekty Pythonu do jednorozmerného riadku, ktorý umožňuje prístup k objektom podľa polohy, pridania, odstránenia, triedenia a rozdelenia.

Základné informácie o zozname Python

Definovanie zoznamu v Pythone je jednoduché - na označenie položiek v zozname stačí použiť syntax zátvorky.

list_of_ints = [1, 2, 3]

Položky v zozname nemusia byť všetky rovnakého typu. Môžu to byť ľubovoľné objekty v jazyku Python. (Tu predpokladajmeTri je funkcia.)

list_of_objects = ["One", TWO, Three, {"Four": 4}, None]

Upozorňujeme, že zmiešané objekty v zozname môžu mať dôsledky na triedenie zoznamu. Pôjdeme do toho neskôr.

Najväčším dôvodom na použitie zoznamu je schopnosť nájsť objekty podľa nich pozíciu v zozname. Použijete na to indexovú notáciu Pythonu: číslo v zátvorkách začínajúce na 0, ktoré označuje pozíciu položky v zozname.

Pre vyššie uvedený príklad list_of_ints [0] výnosy 1. list_of_ints [1] výnosy 2. zoznam_objektov [4] by bolŽiadne objekt.

Indexovanie zoznamu Python

Ak pre index použijete kladné celé číslo, celé číslo označuje pozíciu položky, ktorú chcete vyhľadať. Ale ak použijete anegatívny celé číslo, potom celé číslo označuje pozíciu začínajúcu odkoniec zoznamu. Napríklad pomocou indexu -1 je šikovný spôsob, ako uchmatnúť poslednú položku zo zoznamu bez ohľadu na veľkosť zoznamu.

list_of_ints [-1] výnosy3zoznam_objektov [-1] výnosyŽiadne.

Ako index môžete použiť aj celočíselnú premennú. Akx = 0list_of_ints [x] výnosy 1, a tak ďalej.

Pridávanie a odstraňovanie položiek zoznamu v jazyku Python

Python má niekoľko spôsobov, ako môžete pridať alebo odstrániť položky zo zoznamu.

  • .append () vloží položku nakoniec zoznamu. Napríklad, list_of_ints.append (4) by sa otočillist_of_ints do zoznamu[1,2,3,4]. Prílohy sú rýchle a efektívne; pridanie jednej položky do zoznamu trvá rovnako dlho, bez ohľadu na to, aký dlhý je zoznam.
  • .pop () odstráni a vráti poslednú položku zo zoznamu. Keby sme bežalix = list_of_ints.pop () na originálilist_of_ints, x bude obsahovať hodnotu3. (Nemusíte priraďovať výsledky z.pop () na hodnotu, ak ju nepotrebujete.).pop ()operácie sú tiež rýchle a efektívne.
  • . vložiť () vloží položku na ľubovoľné miesto v zozname. Napríklad,list_of_ints.insert (0,10) by sa otočillist_of_ints do [10,1,2,3]. Upozorňujeme, že čím bližšie vložíte zoznam na prednú časť zoznamu, tým bude táto operácia pomalšia, avšak spomalenia sa príliš veľa nedočkáte, pokiaľ váš zoznam nebude obsahovať tisíce prvkov alebo vkladanie neurčíte.
  • .pop (x) odstráni položku z indexuX. Takželist_of_ints.pop (0) odstránil by položku s indexom 0. Opäť platí, že čím ste bližšie k prednej časti zoznamu, tým môže byť táto operácia pomalšia.
  • .Odstrániť položku) odstráni položku zo zoznamu, alenie na základe jeho indexu. Skôr, .odstrániť () odstrániprvý výskyt objektu, ktorý zadáte, hľadaním od hornej časti zoznamu nadol. Pre[3,7,7,9,8] .odstrániť (7), prvý7 budú odstránené, výsledkom bude zoznam[3,7,9,8]. Aj pri veľkom zozname môže táto operácia spomaliť, pretože ak má pracovať, musí teoreticky prejsť celým zoznamom.

Krájanie zoznamu v jazyku Python

Zoznamy je možné rozdeliť na nové zoznamy, tzv. Proceskrájanie. Syntax rezu Pythonu vám umožňuje určiť, ktorá časť zoznamu sa má vyrezať, a ako manipulovať s vyrezanou časťou.

Vyššie ste videli, ako používať notáciu v zátvorke na získanie jednej položky zo zoznamu: my_list [2], napríklad. Plátky používajú variant rovnakého zápisu indexu (a podľa rovnakých pravidiel indexovania): list_object [start: stop: step].

  • začať je pozícia v zozname na začatie rezu.
  • prestaň je pozícia v zozname, kde prestaneme krájať. Inými slovami,tú pozíciu a všetko po nej je vynechaný.
  • krok je voliteľný indikátor „každého n-tého prvku“ pre rez. Predvolene je to1, takže rez si zachová každý prvok v zozname, z ktorého je rezom. Nastaviť krok do2, a vyberiete každý druhý prvok atď.

Tu je niekoľko príkladov. Zvážte tento zoznam:

slice_list = [1,2,3,4,5,6,7,8,9,0]

slice_list [0: 5] = [1, 2, 3, 4, 5]

(Upozorňujeme, že sa zastavíme na indexe 4, nie na indexe 5!)

slice_list [0: 5: 2] = [1, 3, 5]

Ak vynecháte konkrétny index rezu, Python predpokladá predvolenú hodnotu. Nechajte začiatočný index a Python predpokladá začiatok zoznamu:

slice_list [: 5] = [1, 2, 3, 4, 5]

Nechajte index zastavenia a Python predpokladá koniec zoznamu:

slice_list [4:] = [5, 6, 7, 8, 9, 0]

Thekrok prvok môže byť tiežnegatívny. To nám umožní vziať rezy, ktoré sú obrátenými kópiami originálu:

slice_list [:: - 1] = [0, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Upozorňujeme, že môžete rez rezu obrátiť pomocou indexov spustenia a zastavenia, ktoré sa pohybujú dozadu, nie dopredu:

slice_list [5: 2: -1] = [6, 5, 4]

Nezabudnite tiež, že časti zoznamov súkópie pôvodného zoznamu. Pôvodný zoznam zostáva nezmenený.

[Tiež na: Najlepšie bezplatné kurzy prírodovedy počas karantény]

Triedenie zoznamu Pythonu

Python poskytuje dva spôsoby triedenia zoznamov: Môžete vygenerovať nový, zoradený zoznam zo starého, alebo môžete triediť existujúci zoznam na mieste. Tieto možnosti majú odlišné správanie a rôzne scenáre použitia.

Ak chcete vytvoriť nový, zoradený zoznam, použitezoradené () funkcia na starom zozname:

new_list = zoradené (old_list)

Toto roztriedi obsah zoznamu pomocou predvolených metód triedenia v Pythone. Pre reťazce je predvolené abecedné poradie; pre čísla sú to vzostupné hodnoty. Upozorňujeme, že aby to fungovalo, musí byť obsah zoznamu konzistentný. Nemôžete napríklad triediť kombináciu celých čísel a reťazcov, ale môžete triediť zoznam, ktorý obsahuje celé čísla alebo všetky reťazce. V opačnom prípade dostaneteTypeError v operácii triedenia.

Ak chcete zoznam zoradiť opačne, odovzdajte znakobrátiť parameter:

new_list = zoradené (old_list, reverse = True)

Druhý spôsob triedenia,na mieste triedenie, vykoná operáciu triedenia priamo na pôvodnom zozname. Použite zoznam.triediť ()metóda:

old_list.sort ()

.triediť () tiež berieobrátiť ako parameter, ktorý vám umožní zoradiť naopak.

Obojezoradené () a.triediť () tiež vziať akľúč parameter. The kľúč parameter vám umožňuje poskytnúť funkciu, ktorú je možné použiť na vykonanie vlastnej operácie triedenia. Keď je zoznam zoradený, každý prvok sa odovzdákľúč funkcia a výsledná hodnota sa použije na triedenie. Napríklad, ak by sme mali kombináciu celých čísel a reťazcov a chceli by sme ich zoradiť, mohli by sme použiťkľúč Páči sa ti to:

mixed_list = [1, "2", 3, "4", žiadne] def sort_mixed (položka): vyskúšať: návrat int (položka) okrem: návrat 0 triedený_list = triedený (zmiešaný_list, kľúč = triedený_miešaný) tlačiť (triedený_list)

Upozorňujeme, že tento kód by nebolkonvertovať každý prvok zoznamu na celé číslo! Použilo by to skôr celé číslohodnotu každej položky ako hodnotu triedenia. Všimnite si tiež, ako používame askús / okrem blokujte, aby ste zachytili všetky hodnoty, ktoré sa neprekladajú čisto na celé číslo, a vráťte sa0 pre nich štandardne.

Zoznamy Pythonu nie sú polia

Jedna dôležitá vec, ktorú treba vedieť o zoznamoch v Pythone, je, že nejde o „polia“. Ostatné jazyky, napríklad C, majú jednorozmerné alebo viacrozmerné konštrukcie nazývané polia, ktoré akceptujú hodnoty jedného typu. Zoznamy sú heterogénne; môžu prijímať predmety akéhokoľvek typu.

A čo viac, tamje samostatnápole zadajte v jazyku Python. Python pole je navrhnutý tak, aby napodobňoval správanie poľa v C, a je myslený hlavne na to, aby umožnil Pythonu pracovať s poľami C. Thepole typ je v týchto prípadoch užitočný, ale takmer v každom prípade čistého Pythonu budete chcieť použiť zoznamy.

Kedy používať zoznamy Pythonu (a kedy nie)

Kedy sú teda zoznamy Pythonu najužitočnejšie? Zoznam je najlepší, keď:

  • Musíte nájsť veci rýchlo podľa nichpozíciu v zbierke. Prístup na ľubovoľnú pozíciu v zozname trvá rovnako dlho, takže za vyhľadanie ani milióntej položky v zozname neexistuje žiadny výkonnostný trest.
  • Do zbierky pridávate a odstraňujete hlavne pridávaním na koniec alebo odstraňovaním z konca spôsobom na seba. Opäť platí, že tieto operácie trvajú rovnako dlho bez ohľadu na dĺžku zoznamu.

Zoznam Pythonu je menej vhodný, ak:

  • Chcete vyhľadať položku v zozname, ale neviete jej polohu. Vymôcť urob to s.index () nehnuteľnosť. Môžete napríklad použiťlist_of_ints.index (1) vyhľadať index prvého výskytu čísla1 vlist_of_ints. Rýchlosť by nemala byť problémom, ak je váš zoznam dlhý iba niekoľko položiek, ale pri zoznamoch dlhých tisíce položiek to znamená, že Python musí prehľadávať celý zoznam. V takom prípade použite slovník, v ktorom je možné každú položku nájsť pomocou klávesu a kde bude čas hľadania pre každú hodnotu rovnaký.
  • Chcete pridať alebo odstrániť položky z akejkoľvek pozície okrem konca. Zakaždým, keď to urobíte, musí sa Python hýbaťkaždá ďalšia položka popridaná alebo odstránená položka. Čím je zoznam dlhší, tým väčší je problém s výkonom. Python’sdeque objekt je lepšie prispôsobený, ak chcete voľne pridávať alebo odstraňovať objekty zo začiatku alebo na konci zoznamu.

Ako urobiť viac s Pythonom

  • Ako zabaliť aplikácie v Pythone s Aktovkou BeeWare
  • Ako bežať Anakondu bok po boku s ostatnými Pytónmi
  • Ako používať dátové triedy Pythonu
  • Začnite s asynchronizáciou v Pythone
  • Ako používať asyncio v Pythone
  • 3 kroky na generálnu opravu asynchrónneho kódu Python
  • Ako používať program PyInstaller na vytvorenie spustiteľných súborov Pythonu
  • Výukový program pre Cython: Ako zrýchliť Python
  • Ako inteligentne nainštalovať Python
  • Ako spravovať projekty Pythonu pomocou Poetry
  • Ako spravovať projekty Pythonu pomocou Pipenv
  • Virtualenv a venv: Vysvetlenie virtuálnych prostredí Pythonu
  • Python virtualenv a venv robí a nerobí
  • Vysvetlenie vlákien a podprocesov v jazyku Python
  • Ako používať debugger Pythonu
  • Ako používať timeit na profilovanie kódu Pythonu
  • Ako používať cProfile na profilovanie kódu Pythonu
  • Ako previesť Python na JavaScript (a späť)
$config[zx-auto] not found$config[zx-overlay] not found