Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • vijesti
  • Liste (list). Navedite funkcije i metode

Liste (list). Navedite funkcije i metode

Danas ću govoriti o tipu podataka kao što je liste, operacije nad njima i metode, o generatorima lista i o korištenju lista.

Šta su liste?

Liste u Pythonu su uređene promjenjive kolekcije objekata proizvoljnih tipova (skoro kao niz, ali tipovi se mogu razlikovati).

Da biste koristili liste, morate ih kreirati. Postoji nekoliko načina za kreiranje liste. Na primjer, možete obraditi bilo koji iterable objekat (na primjer) sa ugrađenom funkcijom lista:

>>> lista ["list"]

Također možete kreirati listu koristeći literal:

>>> s = # Prazna lista >>> l = ["s", "p", ["isok"], 2] >>> s >>> l ["s", "p", ["isok" "], 2]

Kao što možete vidjeti iz primjera, lista može sadržavati bilo koji broj bilo kojih objekata (uključujući ugniježđene liste) ili ništa.

I drugi način za kreiranje liste je generatori liste... Generator liste je način da se napravi nova lista primjenom izraza na svaki element u nizu. Generatori liste su vrlo slični petlji.

>>> c = [c * 3 za c u "listu"] >>> c ["lll", "iii", "sss", "ttt"]

Moguća je i složenija konstrukcija generatora liste:

>>> c = [c * 3 za c u "listi" ako je c! = "i"] >>> c ["lll", "sss", "ttt"] >>> c = [c + d za c u "listu" ako je c! = "i" za d u "spam" ako je d! = "a"] >>> c ["ls", "lp", "lm", "ss", "sp", "sm", "ts", "tp", "tm"]

Ali u složenim slučajevima, bolje je koristiti običnu for petlju za generiranje lista.

Navedite funkcije i metode

Kreirajte kreirano, sada morate nešto učiniti sa listom. Za liste su dostupne osnovne kao i metode liste.

Lista metoda

MetodaŠta on radi
list.append(x)Dodaje stavku na kraj liste
list.extend(L)Proširuje listu dodavanjem svih elemenata L na kraj
list.insert(i, x)Umeće vrijednost x na i-ti element
list.remove(x)Uklanja prvi element na listi koji ima vrijednost x. ValueError ako takav element ne postoji
list.pop([i])Uklanja i-ti element i vraća ga. Ako indeks nije naveden, posljednji element se uklanja
list.index(x,])Vraća poziciju prvog elementa s vrijednošću x (prilikom pretraživanja od početka do kraja)
list.count(x)Vraća broj elemenata sa vrijednošću x
list.sort() Sortira listu na osnovu funkcije
lista.obrnuto() Proširuje listu
list.copy() Plitka kopija liste
list.clear() Briše listu

Treba napomenuti da metode lista, za razliku od, modifikuju samu listu, te stoga rezultat izvršenja ne mora biti upisan u ovu varijablu.

>>> l = [1, 2, 3, 5, 7] >>> l. sortiraj () >>> l >>> l = l. sortiraj () >>> print (l) Nema

I na kraju, primjeri rada sa listama:

>>> a = [66.25, 333, 333, 1, 1234.5] >>> print (a. count (333), a. count (66.25), a. count ("x")) 2 1 0 >>> a. umetnuti (2, - 1) >>> a. dodaj (333) >>> a >>> a. indeks (333) 1 >>> a. ukloniti (333) >>> a >>> a. obrnuto () >>> a >>> a. sortiraj () >>> a [-1, 1, 66.25, 333, 333, 1234.5]

Povremeno, kako bi se povećale performanse, liste se zamjenjuju sa mnogo manje fleksibilnim.

Da bih odgovorio na ovo pitanje, moram objasniti neograničene zamjenske znakove i ograničene zamjenske znakove.
Sadržaj ovog posta je sastavljen iz java dokumentacije.

1. Neograničeni zamjenski znakovi

Neograničeni tip džokera je specificiran pomoću zamjenskog znaka (?), na primjer, Lista... Ovo se zove lista nepoznatog tipa. Postoje dva scenarija u kojima je neograničeni zamjenski znak koristan pristup:

    Ako napišete metodu koja se može implementirati pomoću funkcija navedenih u Object.

    Kada kod koristi metode u generičkoj klasi koje su nezavisne od parametra tipa. Na primjer, List.size ili List.clear. U stvari, Classtako se često koristi jer većina metoda iz Class ne zavisi od T.

2. Ograničeni zamjenski znakovi

Razmislite o jednostavnoj aplikaciji za crtanje koja može crtati oblike kao što su pravokutnici i krugovi. Da biste predstavili ove forme unutar programa, možete definirati hijerarhiju klasa kao što je:

javna apstraktna klasa Shape (javno apstraktno crtanje praznine (Canvas c);) javna klasa Krug proširuje oblik (privatni int x, y, radijus; javno crtanje praznine (Canvas c) (...)) javna klasa Pravougaonik proširuje oblik (privatni int x, y, širina, visina; javno crtanje praznine (Canvas c) (...))

Ove klase se mogu nacrtati na platnu:

javna klasa Canvas (javno izvlačenje praznine (Shape s) (s.draw (ovo);))

Svaki crtež obično sadrži nekoliko oblika. Pod pretpostavkom da su predstavljeni kao lista, bilo bi zgodno imati metodu u Canvas koja ih sve crta:

public void drawAll (Lista oblici) (za (Oblik s: oblici) (s.nacrtaj (ovo;))

Pravila tipa sada kažu da se drawAll () može pozvati samo na listama tačnog oblika: ne može se, na primjer, pozvati na Listi ... Ovo je žalosno jer cijela metoda čita oblike sa liste, tako da se isto tako lako može pozvati na Listi ... Zaista želimo da metoda prihvati listu bilo kojeg oblika: public void drawAll (forme liste) (...) Evo male, ali vrlo važne razlike: zamijenili smo tip liste na Listi... Sada će drawAll () prihvatiti liste bilo koje podklase Shape, tako da je sada možemo pozvati ako želimo.

Listaje primjer ograničenog šablona. ? označava nepoznati tip, međutim u ovom slučaju znamo da je ovaj nepoznati tip u stvari podtip oblika. (Napomena: to može biti sam oblik ili neka podklasa, ne bi trebalo doslovno proširiti oblik.) Kažemo da je Shape oblik. gornja granica divlja karta.

Slično, sintaksa? super T, koji je ograničeni zamjenski znak, označava nepoznati tip koji je supertip T. ArrayedHeap280na primjer uključuje ArrayedHeap280 , ArrayedHeap280 i ArrayedHeap280 ... Kao što možete vidjeti u java dokumentaciji za klasu Integer, Integer je podklasa Number, koja je zauzvrat podklasa Object.

Jedna od ključnih karakteristika Pythona koja ga čini tako popularnim je njegova jednostavnost. Lakoća rada sa različitim strukturama podataka – listama, tuplema, rječnicima i skupovima – posebno je impresivna. Danas ćemo razmotriti rad sa listama.

Šta je lista u Pythonu?

Lista je struktura podataka za pohranjivanje objekata različitih tipova. Ako ste koristili druge programske jezike, trebali biste biti upoznati s konceptom niza. Dakle, lista je vrlo slična nizu, samo, kao što je gore spomenuto, u njega možete pohraniti objekte različitih tipova. Veličina liste nije statična, može se mijenjati. Lista je, po svojoj prirodi, promjenjiv tip podataka. Možete pročitati detaljno o tipovima podataka.... Varijabla, definirana kao lista, sadrži referencu na strukturu u memoriji, koja zauzvrat sadrži reference na neki drugi objekt ili strukturu.

Kako se liste pohranjuju u memoriju?

Kao što je gore spomenuto, lista je promjenjiv tip podataka. Kada se kreira, u memoriji se rezerviše oblast, koja se konvencionalno može nazvati "kontejner", u kojoj se pohranjuju reference na druge elemente podataka u memoriji. Za razliku od tipova podataka kao što su broj ili string, sadržaj "kontejnera" liste može se menjati. Kako biste što bolje vizualizirali ovaj proces, pogledajte sliku ispod. U početku je kreirana lista koja sadrži reference na objekte 1 i 2, nakon operacije a = 3, druga veza na listi je počela da ukazuje na objekat 3.

Kreiranje, modifikacija, brisanje lista i rad sa njenim elementima

Možete kreirati listu na jedan od sljedećih načina.

>>> a =>>> tip (a)< class "list" >>>> b = lista ()>>> tip (b)< class "list" >

Takođe možete kreirati listu sa unapred definisanim skupom podataka.

>>> a =>>> tip (a)< class "list" >

Ako već imate listu i želite da kreirate njenu kopiju, možete koristiti sljedeću metodu:

>>> a =>>> b = a [:]>>> print (a)>>>

ili to uradi ovako:

>>> a =>>> b = lista (a)>>> ispis (a)>>> ispis (b)

U slučaju da jednostavno dodijelite liste jedna drugoj, onda varijabla bće biti dodijeljena referenca na istu stavku podataka u memoriji koja se referencira a umjesto kopije liste a... One. ako promijenite listu a, onda b promeniće se takođe.

>>> a =>>> b = a>>> print (a)>>> print (b)>>> a = 10>>> print (a)>>> print (b)

Dodavanje stavke na listu vrši se metodom append ().

>>> a =>>> a.append (3)>>> a.append ("zdravo")>>> print (a)

Za uklanjanje elementa sa liste, u slučaju da znate njegovu vrijednost, koristite metodu remove (x), ovo će ukloniti prvu vezu do ovog elementa.

>>> b =>>> ispiši (b)>>> b.ukloni (3)>>> ispiši (b)

Ako trebate izbrisati element prema njegovom indeksu, koristite naredbu del liste_name [indeks].

>>> c =>>> print (c)>>> del c>>> print (c)

Možete promijeniti vrijednost stavke liste, znajući njen indeks, direktnim pristupom.

>>> d =>>> print (d)>>> d = 17>>> print (d)

Listu možete obrisati jednostavnim ponovnim pokretanjem, kao da je ponovo kreirate.Da biste pristupili stavci na listi, navedite indeks te stavke u uglastim zagradama.

>>> a =>>> a 7

Možete koristiti negativne indekse, u kom slučaju će brojanje ići od kraja, na primjer, da biste pristupili posljednjem elementu liste, možete koristiti sljedeću naredbu:

>>> a [- 1] 0

Da biste sa liste dobili podlistu u određenom rasponu indeksa, navedite početni i završni indeks u uglastim zagradama, odvojene dvotočkom.

>>> a

Lista metoda

list.append (x)

Dodaje stavku na kraj liste. Ista operacija se može uraditi i ovako a = [x].

>>> a =>>> a.dodati (3)>>> ispiši (a)

list.extend (L)

Proširuje postojeću listu dodavanjem svih stavki sa liste L... Ekvivalentno komandi a = L.

>>> a =>>> b =>>> a.proširi (b)>>> ispiši (a)

list.insert (i, x)

Umetnite stavku x na poziciji i... Prvi argument je indeks elementa nakon kojeg će element biti umetnut x.

>>> a =>>> a.insert (0, 5)>>> print (a)>>> a.insert (len (a), 9)>>> print (a)

list.remove (x)

Uklanja prvo pojavljivanje elementa x sa liste.

>>> a =>>> a.ukloni (1)>>> ispiši (a)

list.pop ([i])

Uklanja element sa pozicije i i vraća ga. Ako koristite metodu bez argumenta, posljednja stavka sa liste će biti uklonjena.

>>> a =>>> print (a.pop (2)) 3>>> print (a.pop ()) 5>>> print (a)

list.clear ()

Uklanja sve elemente sa liste. Ekvivalentno del a [:].

>>> a =>>> print (a)>>> a.clear ()>>> print (a)

list.index (x [, početak [, kraj]])

Vraća indeks stavke.

>>> a =>>> a.indeks (4) 3

list.count (x)

Vraća broj pojavljivanja elementa x na listu.

>>> a =>>> print (a.broj (2)) 2

list.sort (ključ = ništa, obrnuto = lažno)

Sortira stavke na listi uzlaznim redoslijedom. Za sortiranje obrnutim redoslijedom koristite zastavicu obrnuto = Tačno... Dodatne opcije otvaraju parametar ključ, pogledajte dokumentaciju za više detalja.

>>> a =>>> a.sort ()>>> print (a)

list.reverse ()

Obrnite redosled stavki na listi.

>>> a =>>> a.obrnuto ()>>> ispis (a)

list.copy ()

Vraća kopiju liste. Ekvivalentno a [:].

>>> a =>>> b = a.copy ()>>> print (a)>>> print (b)>>> b = 8>>> print (a)>>> print (b)

List Comprehensions

List Comprehensions koji se najčešće prevodi na ruski kao apstrakcija lista ili uključivanje liste, to je dio sintakse jezika koji pruža jednostavan način za pravljenje lista.Najlakši posao navesti shvatanja pokazati na primjeru. Recimo da trebate kreirati listu cijelih brojeva iz 0 prije n, gdje n preset. Klasičan način rješavanja ovog problema bi izgledao ovako:

N = int (unos ()) a = za i u opsegu (n): a.dodavanje (i) ispis (a)

Upotreba navesti shvatanja znatno olakšava:

N = int (ulaz ()) a = ispis (a)

ili općenito ovako, u slučaju da više ne trebate koristiti n:

A = ispis (a)

P.S.

Ukoliko ste zainteresovani za temu analize podataka, preporučujemo da se upoznate sa bibliotekom Pande... Na našoj web stranici možete pronaći Sve bibliotečke lekcije Pande prikupljeno u knjizi

Top srodni članci