python list create
V tomto výučbovom zozname pre zoznam Python preskúmame spôsoby vytvárania, prístupu, rozdeľovania, pridávania a mazania prvkov do zoznamov Python, ktoré sú pravdepodobne jedným z najužitočnejších typov údajov:
Python obsahuje 4 dátové typy zhromažďovania, ako je uvedené nižšie:
- Zoznam
- Nastaviť
- Slovník
- Násobný
V tomto výučbe sa budeme podrobne zaoberať zoznamom a jeho rôznymi operáciami. V Pythone je zoznam dátová štruktúra alebo je to ako pole, ktoré sa používa na ukladanie viacerých údajov naraz.
=> Preskúmajte tu sériu školení Python
Ak máte skúsenosti s inými programovacími jazykmi, ako sú Java, C, C ++ atď., Budete oboznámení s konceptom polí. Zoznam je takmer rovnaký ako polia.
Čo sa dozviete:
- Čo sú to zoznamy Pythonu
- Viac informácií o zoznamoch v jazyku Python
- Záver
Čo sú to zoznamy Pythonu
V Pythone je zoznam a Dátový typ , ktorá ukladá kolekciu rôznych objektov (položiek) do hranatej zátvorky (()). Každá položka v zozname je oddelená čiarkou (,) s prvou položkou v indexe 0.
Poznámka :Vpred budú všetky príklady v tomto výučbe bežať priamo z prostredia Pythonu, pokiaľ nie je uvedené inak.
Nižšie je uvedený príklad zoznamu s 5 položkami.
>>> l = ('what','who','where','when','how') >>>l ('what','who','where','when','how')
Na vyššie uvedenom príklade vidíme, že zoznam má Strunové predmety ako položky a každá položka je oddelená čiarkou.
Charakteristika zoznamu Python
Predtým, ako sa pozrieme na to, ako môžeme manipulovať s položkami v zozname, pozrime sa na niektoré z charakteristík, vďaka ktorým sú zoznamy v Pythone zvýhodnené.
Zoznamy Pythonu sú sekvencie kontajnerov
Na rozdiel od plochých sekvencií ( struna , pole.pole , pamäťový pohľad atď.), ktoré môžu obsahovať iba položky jedného typu, zoznam je a postupnosť kontajnerov do ktorého sa zmestia položky jedného aj rôznych typov.
Príklad s položkami jedného typu
Poďme otvoriť náš pythonovský shell a definovať zoznam čísel.
>>> numbers = ('one','two','three','four','five') >>> numbers ('one','two','three','four','five')
Vyššie uvedený príklad zobrazuje zoznam položiek rovnakého typu, v tomto prípade typu reťazec (str) .
Príklad s položkami rôznych typov
Poďme otvoriť náš shell Pythonu a definovať inú verziu zoznamu čísel.
>>> numbers = ('one',2,3,'four',5.0) >>> numbers ('one',2,3,'four',5.0)
Vyššie uvedený príklad zobrazuje zoznam položiek rôznych typov. Typy sú struna , celé číslo, a plavák .
// a sketch showing the list of items and their types as annotation
Zoznam Python môže obsahovať aj všetky objekty ako napr funkcie , triedy , modulov , zoznamy , n-tice, a oveľa viac.
Otvorte editor a vložte nasledujúci kód:
def test(): '''This is a function''' print('This is a test') if __name__ == '__main__': print(test) # return instance object of function 'test' instance = type(test) print(instance) # create a list of colors colors = ('red','blue','green') print(colors) # create a list holding all the various data types defined above, including boolean. my_list = (test, instance, colors, False) print(my_list)
Výkon
Zoznamy Pythonu sú zoradené podľa poradia
Zoznam Pythonu je usporiadaná zbierka objektov. Pozícia každej položky v zozname je veľmi dôležitá. V skutočnosti dva zoznamy s rovnakými položkami nie sú rovnaké, ak poradie, v ktorom sú položky umiestnené, nie je rovnaké.
>>> ('a','b','c','d') == ('a','c','b','d') False
Táto vlastnosť zoznamu Python umožňuje prístup k jeho položkám pomocou indexu a rozdelenia (viac o tom neskôr).
Zoznamy Pythonu sú premenlivé sekvencie
Zoznamy Pythonu sú premenlivé. Čo je to však premenlivý objekt? Je to jednoducho objekt, ktorý je možné po vytvorení upraviť. Príklady ďalších premenlivých sekvencií je slovník , pole.pole , zbierky.deque .
Prečo premenlivé? Sekvencie ako zoznamy sa používajú pre zložité operácie, takže je logické, že by to mali vedieť zmeniť , rásť, pestovať , scvrknúť sa , aktualizácia atď . To je možné iba s premenlivosťou. Mutabilita nám tiež umožňuje upravovať príslušné zoznamy (viac informácií).
Nasledujúcim príkladom overíme premenlivosť zoznamu.
Stačí otvoriť editor a vložiť kód:
def veryfiy_mutability(): # create a list l = (9,0,4,3,5) print('Display before modifying') print('List: {}
Id: {}'.format(l,id(l))) # modify the list by replacing the item at # index 3 to the item -2. l(3) = -2 print('Display after modifying') print('List: {}
Id: {}'.format(l,id(l))) if __name__ == '__main__': veryfiy_mutability()
Výkon
Z vyššie uvedeného výstupu si všimneme, že zoznam pred a po úprave je iný. Avšak Id hodnota je rovnaká. The Id hodnota tu predstavuje adresu objektu v pamäti - ktorá sa získa v Pythone id () .
Toto nám hovorí, že hoci sa obsah zoznamu zmenil, stále ide o ten istý objekt. To teda uspokojuje našu definíciu: „ Je to jednoducho objekt, ktorý je možné po vytvorení upraviť „
Poznámka :Vo vyššie uvedenom príklade sme na úpravu zoznamu použili indexovanie (viac o tomto).
Manipulácia so zoznamami Pythonu
So zoznamami Pythonu je obloha náš limit. Existuje veľa vecí, ktoré môžeme robiť so zoznamami, ako je pridanie , mazanie , indexovanie , krájanie , kontrola členstva , a oveľa viac. Python má tiež zabudované funkcie, ktoré zvyšujú vzrušenie manipulácie so zoznamami.
V tejto časti sa pozrieme na niektoré bežne používané operácie so zoznamami.
Vytvorenie zoznamu
Ak chcete vytvoriť zoznam, jednoducho vložte niekoľko položiek alebo výrazov do hranatej zátvorky oddelených čiarkami.
(expression1, expression2,...,expresionN)
>>> l = (4,3,5,9+3,False) >>> l (4, 3, 5, 12, False)
Python má tiež zabudovaný objekt s názvom zoznam (), ktoré možno použiť na vytvorenie zoznamov.
list( sequence )
>>> l = list() # create an empty list >>> l ()
Python zoznam () môže prijímať typy sekvencií a prevádzať ich do zoznamov. Toto je typický spôsob prevodu n-tice na zoznam.
>>> t = (4,3,5) # tuple >>>l = list(t) # convert into list (4,3,5)
Vo vyššie uvedenom príklade sme použili dátový typ Násobný . Je to podobný zoznam, ale na rozdiel od zoznamov je nemenný a jeho položky sú uvedené v zátvorkách.
Ďalším spôsobom, ako môžeme vytvoriť zoznam, je použitie zoznam porozumení ktorá má nasledujúcu syntax.
(expression for item in sequence)
>>> (i**2 for i in range(4)) (0, 1, 4, 9)
Stojí za zmienku, že zoznamy Pythonu sú odovzdávané odkazom. To znamená, že priradením zoznamu sa zabezpečí jeho identita pamäťového miesta. Chybou mnohých nováčikov je vytváranie zoznamov týmto spôsobom.
>>> l1 = l2 = (4,3) # wrong way to create separate list objects >>> l1 (4,3) >>> l2 (4,3)
Tu by sme si mohli myslieť, že sme vytvorili dva rôzne zoznamy, ale skutočne sme práve vytvorili jeden. Ukážme si to úpravou jednej z premenných.
>>> l1(0) = 0 >>> l1 (0,3) >>> l2 (0,3)
Všimli sme si, že úpravou jednej premennej sa zmení druhá. Je to tak preto, lebo obidve premenné l1 a l2 majú rovnakú identitu umiestnenia pamäte, takže obidve smerujú k rovnakému objektu.
Pridávanie položiek do zoznamu
Python má mnoho spôsobov, ako pridať prvky do svojho zoznamu. Najbežnejším spôsobom je použitie pridať () metóda. Ďalšími spôsobmi sú použitie rozšíriť () metóda. Indexovanie a krájanie (viac o nich neskôr) sa s väčšou pravdepodobnosťou používajú na nahradenie položiek v zozname.
# 1) Použitie metódy append ()
Táto metóda zaberá jednu položku a pridáva ju na koniec zoznamu. Nevráti nový zoznam, ale iba upraví zoznam na danom mieste (vďaka svojej premenlivosti).
>>>l = list() # create empty list >>> l () >>> l.append(4) # add an integer >>> l (4) >>> l.append((0,1)) # add a list >>> l (4, (0, 1)) >>> l.append(4 >> l (4, (0, 1), True) >>> l.append(x for x in range(3)) # add result of a tuple comprehension >>> l (4, (0, 1), True, )
Z vyššie uvedeného príkladu je potrebné poznamenať niekoľko vecí:
- Môžu tu byť výrazy, dátové typy, postupnosti a mnoho ďalších.
- The pridať () metóda má časovú zložitosť (0) 1. To znamená, že je konštantná.
# 2) Použitie metódy extend ()
Táto metóda prijme ako svoj argument iterovateľnú skladbu a na koniec zoznamu pridá všetky položky z nej. Táto metóda sa väčšinou používa, keď chceme do zoznamu pridať jednotlivé položky sekvencie
V zásade rozšíriť () metóda iteruje nad svojím argumentom a pripája každú položku do zoznamu. Rovnako ako metóda append () nevracia nový zoznam, ale upravuje zoznam na danom mieste.
>>> l1 = (3,2,5) # create a list of items >>> l1 (3, 2, 5) >>> l2 = (0,0,-1) # create a second list of items >>> l2 (0, 0, -1) >>> str = 'hello' # create a string(iterable) >>> str 'hello' >>> l1.extend(l2) # append all items from l2 to l1 >>> l1 (3, 2, 5, 0, 0, -1) >>> l1.extend(str) # append all items from str to l1 >>> l1 (3, 2, 5, 0, 0, -1, 'h', 'e', 'l', 'l', 'o')
Z vyššie uvedeného príkladu je potrebné poznamenať niekoľko vecí:
- Reťazec je opakovateľný, takže náš rozšíriť () metóda bude iterovať nad svojimi znakmi.
- The rozšíriť () metóda má časovú zložitosť (0) K kde K je dĺžka jeho argumentu.
Prístup k položkám zo zoznamu
Indexovanie a krájanie sú najbežnejšie prostriedky, ktoré sa používajú na prístup k zoznamom. Môžeme tiež získať prístup k položkám v zozname so slučkami ako pre slučku .
# 1) Indexovanie
Zoznam Python používa číslovanie založené na nule systém. To znamená, že všetky jeho položky sú jedinečne identifikované indexovým číslom začínajúcim od 0 do n-1, kde n je dĺžka zoznamu.
Zvážte zoznam uvedený nižšie:
>>> colors = ('red','blue','green','yellow','black') # create list >>> colors ('red','blue','green','yellow','black') >>> len(colors) # get list length 5
Nasledujúca tabuľka zobrazuje príslušné indexy v indexe číslovanie zoznamu založené na nule.
Položka | sieť | Modrá | zelená | žltá | čierna |
---|---|---|---|---|---|
pop () | Vymazanie / odstránenie prvku z posledného v zozname. | ||||
Register | 0 | 1 | dva | 3 | 4 |
Z tabuľky vyššie vidíme, že prvá položka („červená“) je na pozícii indexu 0 a posledná položka („čierna“) je na pozícii indexu 4 (n-1), kde n = 5 (dĺžka objektu farby).
Ako sme videli v charakteristickej časti vyššie, zoznamy Pythonu sú usporiadané sekvencie. To nám umožňuje používať indexovanie na ľahký prístup a manipuláciu s jeho položkami.
Použime indexovanie na prístup k položkám na konkrétnych indexoch vyššie uvedeného objektu farieb.
>>> colors # original list ('red','blue','green','yellow','black') >>> colors(0) # access item at index 0 'red' >>> colors(4) # access item at index 4 'black' >>> colors(9) # access item at index 9 Traceback (most recent call last): File '', line 1, in IndexError: list index out of range
Poznámka :Posledné vyššie uvedené vyhlásenie sa pokúša získať prístup k položke na pozícii indexu 9 z objektu zoznamu s dĺžkou 5. V zozname Pythonu prístup k položke s indexom, ktorý neexistuje, zvýši hodnotu Chyba indexu výnimkou.
Dôležitým konceptom indexovania je, že môžeme použiť negatívne indexovanie, t. J. Môžeme pristupovať k položkám zoznamu obrátene, počínajúc -1 pre poslednú položku a končiac –n pre poslednú položku, kde n je dĺžka objektu zoznamu.
Ak v tabuľke vyššie použijeme negatívne indexovanie, bude to vyzerať nasledovne:
Položka | sieť | Modrá | zelená | žltá | čierna |
---|---|---|---|---|---|
Register | -5 | -4 | -3 | -dva | -1 |
Použijme negatívne indexovanie na prístup k niektorým položkám farebného objektu vytvoreným vyššie.
>>> colors # original list ('red','blue','green','yellow','black') >>> colors(-1) # access item and index -1(first item counting backward) 'black' >>> colors(-3) # access item at index -3(third item counting backward) 'green' >>> colors(-5) # access item at index -5 (last item counting backward) 'red'
# 2) Krájanie
Na rozdiel od indexovania, ktoré vracia iba jednu položku, krájanie na druhej strane môžete vrátiť celý rad položiek.
Má nasledujúcu syntax:
L(n:m)
Keď n je číslo indexu, kde začína rez (predvolené nastavenie je 0), m je exkluzívne číslo indexu, kde rez končí (predvolené nastavenie je dĺžka-1). Sú oddelené dvojbodkou (:)
Zvážte nasledujúci príklad, ktorý používa rezanie na prístup k položkám na konkrétnych indexoch vyššie uvedeného objektu farieb.
>>> colors # original list ('red','blue','green','yellow','black') >>> colors(0:2) # get first two items ('red', 'blue') >>> colors(1:4) # get items at index 1,2 and 3 ('blue', 'green', 'yellow') >>> colors(2:len(colors) # get items from index 2 to the last item ('green', 'yellow', 'black') >>> colors(3:4) # get one item at index 3. Same as colors(3) ('yellow') >>>
V syntaxi L (n: m) je predvolené nastavenie n a hodnota m predvolená dĺžka zoznamu. Takže dovnútra príklady 1 a 3 vyššie by sme mohli vynechať n a m ako farby (: 2), respektíve farby (2:). Alebo (:), ktoré v tomto prípade vráti plytkú kópiu celého objektu zoznamu.
Pri zostavovaní zoznamov môžeme tiež použiť záporné čísla indexov. Spravidla sa to používa, keď chceme do zoznamu vstúpiť opačne.
>>> colors # original list ('red','blue','green','yellow','black') >>> colors(-3:-2) ('green') >>> colors(-2:) ('yellow', 'black')
Existuje aj tretí parameter, ktorý podpora rezov nazýva krok (s). Definuje, o koľko položiek sa má posunúť vpred po načítaní prvej položky zo zoznamu. Predvolená hodnota je 1.
L(n:m:s)
Pomocou rovnakého vyššie definovaného zoznamu farieb použijeme tretí krok rezu na presunutie o 2 kroky.
>>> colors # original list ('red','blue','green','yellow','black') >>> colors(0:3:2) ('red', 'green')
# 3) Pomocou slučiek
Smyčky sa väčšinou používajú na prístup k položkám v zozname na účely manipulácie s položkami. Takže, ak chceme pracovať s položkami v zozname, môžeme použiť pre slučku získať prístup k položkám a odovzdať ich na ďalšie použitie.
Povedzme, že chceme spočítať počet písmen pre každú položku. Môžeme použiť pre slučku dosiahnuť to.
Otvorte editor a vložte nasledujúci kód:
def count_letters(l): count = {} # define a dict to hold our count for i in l: # loop through the list count(i) = len(i) # for each item, compute its length and store it in the dict return count # return the count if __name__ == '__main__': colors = ('red', 'blue', 'green', 'yellow', 'black') print(count_letters(colors))
Výkon
Na záver tejto časti sa pozrime na dve skvelé veci, ktoré je možné vykonať krájaním.
-
Vytvorte plytkú kópiu zoznamu
Toto je základný spôsob použitia copy () metóda objektu zoznamu alebo vstavaná funkcia copy.copy . To sa však dá dosiahnuť krájaním.
>>> colors # original list ('red','blue','green','yellow','black') >>> colors_copy = colors(:) # make a shallow copy >>> colors_copy ('red', 'blue', 'green', 'yellow', 'black') >>> colors_copy(0) = 0 # modify item at index 0 by changing its value to 0 >>> colors_copy # the copied version now has 0 at index 0 (0, 'blue', 'green', 'yellow', 'black') >>> colors # the original version is unchanged ('red', 'blue', 'green', 'yellow', 'black') >>>
-
Obrátiť zoznam
Základným spôsobom je použitie obrátiť metóda objektu zoznamu alebo vstavaná funkcia obrátený () . To sa však dá dosiahnuť krájaním.
>>> colors # original list object ('red', 'blue', 'green', 'yellow', 'black') >>> colors(::-1) # returns a reversed shallow copy of the the original list ('black', 'yellow', 'green', 'blue', 'red') >>>
Odstránenie položiek zo zoznamu
Pretože do zoznamu môžeme pridať toľko položiek, je možné ich zo zoznamu aj odstrániť. Položky je možné odstrániť tromi spôsobmi:
# 1) Používanie príkazu del
Má nasledujúcu syntax:
del target_list
Zoznam cieľov ( target_list ) môže byť celý zoznam (v prípade, že chcete zoznam vymazať) alebo položka alebo položky v zozname (v tomto prípade použijete indexovanie alebo rozdelenie).
Zvážte príklad uvedený nižšie .
Povedzme, že chceme odstrániť niektoré položky zo zoznamu farieb vytvoreného vyššie.
>>> colors # original list ('red', 'blue', 'green', 'yellow', 'black') >>> c_copy = colors(:) # make a shallow copy to work on >>> del c_copy(0) # delete item at index 0 >>> c_copy ('blue', 'green', 'yellow', 'black') >>> del c_copy(0:2) # delete items at index 0 and 1(slicing) >>> c_copy ('yellow', 'black') >>> del c_copy(:) # delete all items in a list. Same as ‘c_copy.clear()’ () >>> del c_copy # delete the list object >>> c_copy # access object that doesn't exist Traceback (most recent call last): File '', line 1, in NameError: name 'c_copy' is not defined >>>
Poznámka :Príkaz del sa vymaže na mieste t.j. , namiesto úpravy nového objektu zoznamu upraví pôvodný objekt zoznamu.
# 2) Používanie zoznamu. Odstrániť (x)
Odstráni prvú položku zo zoznamu, ktorej hodnota sa rovná X . Ak takáto položka neexistuje, vyvolá ValueError.
Táto metóda sa používa väčšinou na odstránenie položiek zo zoznamu podľa názvu, na rozdiel od príkazu del, ktorý používa indexovanie a rozdelenie.
>>> colors # original list ('red', 'blue', 'green', 'yellow', 'black') >>> c_copy = colors(:) # create shallow copy to work on >>> c_copy ('red', 'blue', 'green', 'yellow', 'black') >>> c_copy.remove('blue') # remove first item with name 'blue' >>> c_copy ('red', 'green', 'yellow', 'black') >>> c_copy.remove('blue') # try to remove item that doesn't exist Traceback (most recent call last): File '', line 1, in ValueError: list.remove(x): x not in list >>>
Poznámka :Objekt zoznamu odstrániť () metóda sa vymaže na mieste t.j. , namiesto úpravy nového objektu zoznamu upraví pôvodný objekt zoznamu.
# 3) Používanie zoznamu.pop ((i))
Odstráni a vráti položku na danom mieste v objekte zoznamu. Ak nie je zadané i (index), odstráni a vráti sa posledná položka v zozname.
Poznámka :Hranatá zátvorka okolo i vyššie neznamená zoznam i, skôr znamená, že i je voliteľné.
>>> colors # original list ('red', 'blue', 'green', 'yellow', 'black') >>> c_copy = colors(:) # make a shallow copy to work on >>> c_copy ('red', 'blue', 'green', 'yellow', 'black') >>> c_copy.pop(3) # pop out the item at index 3 'yellow' >>> c_copy ('red', 'blue', 'green', 'black') >>> c_copy.pop() # pop out the last item in the list 'black' >>> c_copy ('red', 'blue', 'green') >>>
Poznámka: Zoznam. pop ((i)) metóda sa vymaže na mieste t.j. , namiesto úpravy nového objektu zoznamu upraví pôvodný objekt zoznamu. Vráti tiež položku odstránenú zo zoznamu
Výmena položiek zo zoznamu
Výmena položiek je dosť jednoduchá. V jednej z vyššie uvedených častí sme videli indexovanie a delenie. Môžu byť použité na prístup a odstránenie položiek zo zoznamu.
# 1) Nahradiť pomocou indexovania
L(index) = value
>>> colors # original list ('red', 'blue', 'green', 'yellow', 'black') >>> c_copy = colors(:) # make a shallow copy to work on >>> c_copy ('red', 'blue', 'green', 'yellow', 'black') >>> c_copy(0) = 'brown' # replace item at index 0 with 'brown' >>> c_copy ('brown', 'blue', 'green', 'yellow', 'black') >>>
# 2) Výmena pomocou krájania
L(n:m) = value
Poznámka : Hodnota by mala byť iterovateľný , alebo inak TypeError výnimka bude vznesená.
>>> colors # original list ('red', 'blue', 'green', 'yellow', 'black') >>> c_copy = colors(:) # make a shallow copy to work on >>> c_copy(0:2) = ('brown') # replace items at index 0 and 1 with 'brown' >>> c_copy ('brown', 'green', 'yellow', 'black') >>> c_copy(1:3) = ('white','purple') # replace items at index 1 and 2 with 'white' and 'purple' >>> c_copy ('brown', 'white', 'purple', 'black') >>> c_copy(1:4) = ('white','purple') # replace items at index 1,2 and 3 with 'white' and 'purple'. Here we replace 3 items with 2 items >>> c_copy ('brown', 'white', 'purple') >>>
často kladené otázky
Otázka č. 1) Čo je zoznam zoznamov v Pythone?
Odpoveď: Zoznam zoznamov v Pythone je zoznam, ktorý obsahuje zoznamy ako svoju položku.
Napríklad
(('a','b'),('c','d'))
Môže sa tiež označovať ako a vnorený zoznam .
Otázka 2) Ako deklarujete zoznam v Pythone?
Odpoveď: V Pythone je možné zoznam deklarovať dvoma spôsobmi. Buď pomocou zabudovanej funkcie zoznam () alebo použitím zátvorky (). zoznam () zaberá iteračnú položku a () prijíma položky ľubovoľného typu oddelené čiarkou.
(pytyon)>>> list('hello') # a string is iterable ('h', 'e', 'l', 'l', 'o') >>> (3,4,5,23) # numbers are separated by comma (3, 4, 5, 23) >>> (/python)
Otázka č. 3) Môžete vložiť zoznam do zoznamu Python?
Odpoveď: Áno, môžeme vložiť zoznam do zoznamu. Zoznam je vlastne sekvencia kontajnerov, ktorá prijíma položky ľubovoľného dátového typu.
Otázka č. 4) Čo robí zoznam () v Pythone?
Odpoveď: zoznam ( ) je vstavaná funkcia v Pythone, ktorá vytvára objekt zoznamu. Berie to ako svoj argument iteráciu.
>>> list((3,2,4)) # The iterable object here is a tuple. (3, 2, 4) >>>
Otázka č. 5) Môže zoznam Pythonu obsahovať rôzne typy?
Odpoveď: Zoznam je postupnosť kontajnerov, ktorá prijíma položky akýchkoľvek dátových typov ( zoznam , násobný , celé číslo , plavák , struny , atď)
Viac informácií o zoznamoch v jazyku Python
Čo je to dátová štruktúra?
Počítače sa používajú na ukladanie veľkého množstva údajov alebo na spracovanie veľkého množstva údajov s vysokou rýchlosťou a presnosťou. Preto je najlepšie ukladať dáta natrvalo, aby ste k nim mali rýchly prístup.
Počas spracovania údajov by malo k nemu dôjsť v čo najkratšom možnom čase bez straty presnosti. Dátovú štruktúru používame na organizované zaobchádzanie s údajmi a ukladanie údajov do pamäte na spracovanie.
Pretože Python je programovací jazyk na vysokej úrovni a interpretovaný, je veľmi dôležité využívať dátovú štruktúru v Pythone.
Čo je zoznam?
Zoznam je dátová štruktúra, ktorá sa používa na ukladanie viacerých údajov naraz.
Údaje uložené v zozname sú homogénne, čo z nich robí najvýkonnejšiu vlastnosť zoznamu v Pythone. Môžeme uložiť viac údajov z rôznych typov údajov, ako sú String, Celé čísla a objekty, rovnako do jedného zoznamu.
Zoznam je v Pythone premenlivý, takže údaje je možné kedykoľvek zmeniť, a to aj po vytvorení. Zoznamy sú veľmi výkonné na implementáciu zásobníkov a frontov v Pythone.
Ako už bolo spomenuté, zoznam ukladá údaje v usporiadanom poradí a k údajom uloženým v zozname sa pristupuje pomocou ich indexu. V prípade zoznamu bude index vždy začínať od nuly. Každý prvok má v zozname konkrétne miesto a ku všetkým týmto údajom sa pristupuje pomocou indexu.
V zozname môžeme uložiť tú istú hodnotu viackrát a každý údaj sa bude považovať za samostatný a jedinečný prvok. Najlepšie je uložiť zoznamy a neskôr ich iterovať.
Vytvorenie zoznamu
Údaje v zozname sú uložené oddelené čiarkami a sú uzavreté v hranatej zátvorke (()). Položky v zozname nemusia byť rovnakého typu.
Syntax: List = (item1, item2, item3)
Príklad 1:
List = ( )
Príklad 2:
List = (2, 5, 6.7)
Príklad 3:
List = (2, 5, 6.7, ‘Hi’)
Príklad 4:
List = (‘Hi’, ‘Python’, ‘Hello’)
Vo vyššie uvedených príkladoch môžeme pozorovať, že máme uložené položky rôznych dátových typov s oddelenými čiarkami, 2 a 5 sú typu Integer, 6.7 je typu float a 'Hi' je typu String, všetky tieto položky sú uzavreté v zoznam a to z neho robí zoznam.
Môžeme tiež vyhlásiť prázdny zoznam. Zoznam môžeme tiež vyhlásiť v inom zozname a nazývame ho ako vnorený zoznam.
Príklad 5:
List = (‘Hi’, (2, 4, 5), (‘Hello’))
Vo vyššie uvedenom príklade môžete pozorovať, že zoznam bol deklarovaný v inom zozname.
Prístup k hodnotám v zozname
Existuje niekoľko spôsobov, ako môžeme získať prístup k položkám nachádzajúcim sa v zozname v Pythone.
Pomocou indexu môžeme získať prístup k prvkom zoznamu. Index začína od 0 a index by mal byť vždy celé číslo. Ak použijeme iný index ako celé číslo, ako je float, výsledkom bude TypeError.
Príklad 1:
List = (2, 5, 6.7, ‘Hi’) print(“List is:”, List)
Výkon:
Zoznam je: (2, 5, 6.7, „Ahoj“)
Výkon:
súkromný server World of Warcraft
Vo vyššie uvedenom príklade priamo tlačíme zoznam pomocou funkcie tlače, nepristupujeme k jednotlivým prvkom zo zoznamu.
Poďme pristupovať k jednotlivým prvkom zo zoznamu.
Príklad: 2
List = (2, 5, 6.7, ‘Hi’) print(“Second element of the list is:”, List(1))
Výkon:
Druhým prvkom zoznamu je: 5
Výkon:
Vo vyššie uvedenom príklade môžete pozorovať, že tlačíme druhý prvok zoznamu, ktorý je 5, ale môžete dostať otázku, prečo v tlačovom vyhlásení tlačíme Zoznam (1)? Je to preto, že index začína od nuly, a preto Zoznam (1) odkazuje na druhý prvok zoznamu.
Príklad: 3
List = (2, 5, 6.7, ‘Hi’) print(“First element in the List is: ”, List(0)) print(“Last element in the List is: ”, List(3))
Výkon:
Prvý prvok v zozname je: 2
Posledný prvok v zozname je: Ahoj
Výkon:
Príklad: 4
List = (‘Hi’, (2, 4, 5)) print(“First element of the list is: ”, List(0)(1)) print(“Elements present inside another list is: ”, List(1)(2))
Výkon:
Prvý prvok zoznamu je: i
Prvky nachádzajúce sa v inom zozname sú: 5
Výkon:
Ak vo vyššie uvedenom programe pozorne sledujete, môžete vidieť, že pristupujeme k prvkom z vnoreného zoznamu.
Interne sa údaje budú ukladať v maticovom formáte, ako je uvedené nižšie:
Ahoj
2 4 5
Ak sa teda pokúsime získať prístup k zoznamu (0) (1), bude to ukazovať na 1svriadok a 2ndstĺpec, čím budú údaje označené „i“.
Podobne, keď sa pokúsime získať prístup k zoznamu (1) (2), bude to ukazovať na 2ndriadok a 3rdstĺpec, teda údaje budú 5.
Negatívne indexovanie
K údajom môžeme pristupovať aj pomocou záporného indexu. Negatívny index bude vždy začínať od -1 a -1 sa týka posledného prvku a -2 znamená poslednú druhú položku atď.
Príklad: 1
List = (2, 5, 7, 3) print(“Last element in the list is: ”, List(-1))
Výkon:
Posledný prvok v zozname je: 3
Výkon:
Príklad: 2
List = (2, 5, 7, 3) print(“Second element in the list is: ”, List(-3))
Výkon:
Druhý prvok v zozname je: 5
Výkon:
Krájanie zoznamu
Pomocou operátora rezu (:) môžeme získať prístup k množstvu prvkov zo zoznamu
Príklad: 1
List = (1, 2, 3, 4, 5, 6, 7) print(“Elements from 2nd to 5th is: ”, List(1:5)) print(“Elements beginning to 2rd is: ”, List(:-3)) print(“Elements 4th to end is: ”, List(3:)) print(“Elements from start to end is: “, List(:))
Výkon:
Prvky od 2. do 5. sú: (2, 3, 4, 5)
Prvky začínajúce na 2. mieste sú: (1, 2, 3, 4)
Prvky 4. až koniec sú: (4, 5, 6, 7)
Prvky od začiatku do konca sú: (1, 2, 3, 4, 5, 6, 7)
Výkon:
K prvkom prítomným vo vnútri zoznamu môžeme tiež pristupovať pomocou slučky for.
najlepší bezplatný čistič registrov pre Windows 10
Príklad: 2
List = (1, 2, 3, 4, 5, 6, 7) forele in List: print(ele)
Výkon:
1
dva
3
4
5
6
7
Výkon:
Pamätajte na formát indexovania uvedený nižšie:
H | JE | Ľ | Ľ | ALEBO | 5 | 7 | 9 | 4 |
0 | 1 | dva | 3 | 4 | 5 | 6 | 7 | 8 |
-9 | -8 | -7 | -6 | -5 | -4 | -3 | -dva | -1 |
Ako už bolo spomenuté, Zoznam v pythone je premenlivý, čo znamená, že prvky je možné meniť, aj keď sa jedná o celé číslo, reťazec alebo akýkoľvek dátový typ.
Zoznam môžeme aktualizovať pomocou operátora priradenia.
Príklad: 3
List = (2, 4, 6, 9) #updating the first element List(0) = 7 print(“Updated list is: ”, List)
Výkon:
Aktualizovaný zoznam je: (7, 4, 6, 9)
Výkon:
V uvedenom príklade aktualizujeme prvý prvok zoznamu „2“ o nový prvok „7“.
Príklad: 4
List = (2, 5, 1, 3, 6, 9, 7) #updating one or more elements of the list at once List(2:6) = (2, 4, 9, 0) print(“Updated List is: ”, List)
Výkon:
Aktualizovaný zoznam je: (2, 5, 2, 4, 9, 0, 7)
Vo vyššie uvedenom príklade aktualizujeme zoznam údajov do zoznamu.
Výkon:
Pridávanie prvkov do zoznamu
Existuje niekoľko spôsobov, ako môžeme do zoznamu pridať prvky, a python má zabudovanú funkciu s názvom append ().
Pomocou append () môžeme do zoznamu pridať iba jeden prvok. Ak chcete do zoznamu pridať viac prvkov, musíme využiť pre slučku . Funkcia append () vždy pridá prvok na koniec zoznamu, funkcia append () zaberie iba jeden argument.
Ak chcete pridať prvky na konkrétnom mieste, stačí použiť metódu insert (). insert () berie dva argumenty, t. j. pozíciu a hodnotu, pozícia odkazuje na index, kde je potrebné pridať prvky, a hodnota označuje prvok, ktorý sa má pridať do zoznamu.
Existuje ešte jedna metóda s názvom extend (), pomocou ktorej môžeme do zoznamu pridávať prvky. na pridanie zoznamu prvkov do zoznamu sa používa metóda extend (). Podobne ako v prípade metód append () a extend () pridá aj prvky na koniec zoznamu.
Príklad: 1
List = (“Hello”, “Good Morning”) print(“List before appending values is: “, List) List.append(“Python”) List.append(“Hi”) print(“List after appending values is: ”, List)
Výkon:
Zoznam pred pridaním hodnôt je: („Dobrý deň“, „Dobré ráno“)
Zoznam po pridaní hodnôt je: („Hello“, „Good Morning“, „Python“, „Hi“)
V uvedenom príklade pripájame hodnoty „Python“ a „Hi“ na koniec zoznamu.
Výkon:
Príklad: 2
List = (“Hello”, “Good Morning”) print(“List before appending values is: “, List) print(“Length of the list before appending is: “, len(List)) List.append(“Python”) List.append(“Hi”) print(“List after appending values is: ”, List) print(“Length of the list after appending is: “, len(List))
Výkon:
Zoznam pred pridaním hodnôt je: („Dobrý deň“, „Dobré ráno“)
Dĺžka zoznamu pred pripojením je: 2
Zoznam po pridaní hodnôt je: („Hello“, „Good Morning“, „Python“, „Hi“)
Dĺžka zoznamu po pripojení je: 4
Dĺžku zoznamu môžeme zistiť pomocou funkcie len (), ako je to znázornené v príklade vyššie.
Výkon:
Môžeme tiež pridať viac hodnôt do zoznamu pomocou cyklu for.
Príklad: 3
List = (7, 9, 8) print(“List before adding elements is: “, List) print(“Length of List before adding elements is: “, len(List)) for i in range(2, 6): List.append(i) print(“List after adding elements is: “, List) print(“Length of List after adding elements is: “, len(List))
Výkon:
Zoznam pred pridaním prvkov je: (7, 9, 8)
Dĺžka zoznamu pred pridaním prvkov je: 3
Zoznam po pridaní prvkov je: (7, 9, 8, 2, 3, 4, 5)
Dĺžka Zoznamu po pridaní prvkov je: 7
Výkon:
Čo sa stane, ak k zoznamu pripojíme zoznam? Pozrime sa na to v nasledujúcom príklade.
Príklad: 4
List1 = (“Hi”, “Python”) List2 = (1, 5, 7, 2) List1.append(List2) print(“List1 after appending List2 is: “, List1)
Výkon:
Zoznam1 po pripojení zoznamu2 je: („Ahoj“, „Python“, (1, 5, 7, 2))
Ak si všimnete vo vyššie uvedenom príklade, keď pripojíme List2 k List1, potom sa List1 stane vnoreným zoznamom.
Výkon:
Ak po vytvorení zoznamu nechcete vytvoriť vnorený zoznam, je lepšie použiť metódu extend ().
Príklad: 5
List1 = (“Hi”, “Python”) List2 = (1, 5, 7, 2) List1.extend(List2) print(“List1 after appending List2 is: “, List1)
Výkon:
Zoznam1 po pripojení zoznamu2 je: („Ahoj“, „Python“, 1, 5, 7, 2)
Keď použijeme metódu extend (), prvky List1 sa rozšíria o prvky List2. Pamätajte, že pri použití metódy extend () zoznam nepridá.
Výkon:
Ak rozšírite zoznam reťazcom, pripojí každý znak reťazca k zoznamu, pretože reťazec je opakovateľný.
Príklad: 6
List = (1, 5, 7, 2) List.extend(“Python”) print(“List after extending the String is: “, List)
Výkon:
Zoznam po rozšírení reťazca je: (1, 5, 7, 2, „P“, „y“, „t“, „h“, „o“, „n“)
Výkon:
Zoznam príloh () vs extend ()
Pozrime sa na niekoľko príkladov pre extend () a append ().
Príklad: 1
def my_fun(): List1 = (“Hi”, 1, “Hello”, 2, 5) print(“The elements of List is: “, List) List.append(“Python”) print(“List after appending the String is: “, List) List.append((“one”, “two”, 3)) print(“List after appending the list is: “, List) List2 = (“Apple”, “Orange”, 2, 8) List1.extend(List2) print(“List1 after extending the List2 is: “, List1) if __name__ == “__main__”: my_fun()
Výkon:
Prvky zoznamu sú: („Hi“, 1, „Hello“, 2, 5)
Zoznam po pripojení reťazca je: („Hi“, 1, „Hello“, 2, 5, „Python“)
Zoznam po pripojení k zoznamu je: („Ahoj“, 1, „Dobrý deň“, 2, 5, „Python“, („jeden“, „dva“, 3))
Zoznam1 po rozšírení Zoznam2 je: („Ahoj“, 1, „Ahoj“, 2, 5, „Python“, („jeden“, „dva“, 3), „Apple“, „Orange“, 2, 8)
Výkon:
Príklad: 2
List = (“Apple”, “Orange”, “Mango”, “Strawberry”) print(“List before inserting is: “, List) List.insert(2, “Watermelon”) print(“List after inserting is: “, List)
Výkon:
Zoznam pred vložením je: („Apple“, „Orange“, „Mango“, „Strawberry“)
Zoznam po vložení je: („Apple“, „Orange“, „Watermelon“, „Mango“, „Strawberry“)
Výkon
Ako sme už diskutovali, metóda insert () sa používa na vkladanie hodnôt do konkrétneho indexu zoznamu.
Príklad: 3
List1 = (2, 4, 6, 8) print(“List after adding the elements is: “, List1 + (1, 3, 5, 7)) print(“After adding same elements repeatedly is: “, (“Hi”) *5)
Výkon:
Zoznam po pridaní prvkov je: (2, 4, 6, 8, 1, 3, 5, 7)
Po opakovanom pridávaní tých istých prvkov je: („Ahoj“, „Ahoj“, „Ahoj“, „Ahoj“, „Ahoj“)
Výkon:
Odstránenie alebo odstránenie prvkov zo zoznamu
Prvky zo zoznamu môžeme tiež vymazať alebo odstrániť pomocou príkazov del and remove ().
Pozrime sa na príklad nižšie.
Príklad: 1
List = (1, 2, 3, 4, 5, 6, 7, 8, 9) print(“List before deleting 3rd element is: ”, List) del List(3) print(“List after deleting 3rd element is: ”, List) del List(1:3) print(“List after deleting multiple elements is: “, List)
Výkon:
Zoznam pred odstránením 3. prvku je: (1, 2, 3, 4, 5, 6, 7, 8, 9)
Zoznam po odstránení 3. prvku je: (1, 2, 3, 5, 6, 7, 8, 9)
Zoznam po odstránení viacerých prvkov je: (1, 5, 6, 7, 8, 9)
Vo vyššie uvedenom príklade môžete pozorovať, že sme použili príkaz del na odstránenie prvku alebo viacerých príkazov zo zoznamu.
Výkon:
Teraz uvidíme metódu remove ().
Príklad: 2
List = (1, 2, 3, 4, 5, 6, 7) print(“List before removing a element is: “, List) List.remove(3) print(“List after removing a element is: “, List) List.pop() print(“List after poping the element is: “, List)
Výkon:
Zoznam pred odstránením prvku je: (1, 2, 3, 4, 5, 6, 7)
Zoznam po odstránení prvku je: (1, 2, 4, 5, 6, 7)
Zoznam po vysunutí prvku je: (1, 2, 4, 5, 6)
Vo vyššie uvedenom príklade môžete pozorovať, že odstránime prvok zo zoznamu pomocou metódy remove (). Metóda pop () sa používa na odstránenie / odstránenie posledného prvku zo zoznamu.
Výkon:
Zoznam metód
Metódy | Popis |
---|---|
jasný() | Odstrániť všetky prvky zo zoznamu. |
pridať () | Ak chcete pridať prvok na koniec zoznamu. |
vložiť () | Na vloženie prvku do konkrétneho indexu zoznamu. |
rozšíriť () | Ak chcete pridať zoznam prvkov na koniec zoznamu. |
count () | Vrátiť počet prvkov so špecifickou hodnotou. |
index () | Vráti index prvého prvku. |
reverz () | Obrátiť existujúci zoznam. |
odstrániť () | Odstrániť prvky zo zoznamu. |
Záver
V tomto tutoriáli sme sa pozreli na niektoré charakteristiky zoznamov Python spolu s rôznymi spôsobmi manipulácie so zoznamom ako napr vytvorenie zoznamu , prístup k položkám zo zoznamu a nahradzovanie položiek zo zoznamu.
Tento návod na zoznam Python je možné uzavrieť nasledujúcimi ukazovateľmi:
- Zoznam je jeden z dátových typov v Pythone, ktorý sa tiež označuje ako dátová štruktúra.
- Zoznam sa používa na ukladanie veľkého počtu hodnôt ľubovoľných údajových typov do jednej premennej, čo zase umožňuje ľahký prístup.
- Index pre zoznam začína vždy od nuly ako ostatné programovacie jazyky.
- Ak pracujete na zozname, musíte si pamätať všetky jeho bežné funkcie.
=> Navštívte tu a naučte sa Python od nuly
Odporúčané čítanie
- Výukový program pre Python pre začiatočníkov (praktické školenie v jazyku Python ZDARMA)
- Premenné Pythonu
- Výukový program pre pokročilý zoznam Pythonu (zoradenie, obrátenie, indexovanie, kopírovanie, pripojenie, súčet)
- Tutorial pre Python Tuple s praktickými príkladmi
- Funkcie reťazca Python
- Zoznamy v STL
- Prepojená dátová štruktúra zoznamu v C ++ s ilustráciou
- Dátová štruktúra kruhového prepojeného zoznamu v C ++ s ilustráciou