Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Listat (lista). Listoni funksionet dhe metodat

Sot do të flas për një lloj të dhënash si p.sh listat, operacionet mbi to dhe metodat, për gjeneruesit e listave dhe për përdorimin e listave.

Çfarë janë Listat?

Listat në Python janë koleksione të ndryshueshme të renditura të objekteve të llojeve arbitrare (pothuajse si një grup, por llojet mund të ndryshojnë).

Për të përdorur listat, duhet t'i krijoni ato. Ka disa mënyra për të krijuar një listë. Për shembull, mund të përpunoni çdo objekt të përsëritur (për shembull) me funksionin e integruar listë:

>>> listë ["listë"]

Ju gjithashtu mund të krijoni një listë duke përdorur një fjalë për fjalë:

>>> s = # Lista e zbrazët >>> l = ["s", "p", ["isok"], 2] >>> s >>> l ["s", "p", ["isok" "], 2]

Siç mund ta shihni nga shembulli, lista mund të përmbajë çdo numër të çdo objekti (përfshirë listat e ndërlidhura), ose asgjë.

Dhe një mënyrë tjetër për të krijuar një listë është gjeneruesit e listave... Një gjenerues i listës është një mënyrë për të ndërtuar një listë të re duke aplikuar një shprehje për secilin element në një sekuencë. Gjeneratorët e listave janë shumë të ngjashëm me një lak.

>>> c = [c * 3 për c në "listën"] >>> c ["lll", "iii", "sss", "tttt"]

Një ndërtim më kompleks i një gjeneruesi të listës është gjithashtu i mundur:

>>> c = [c * 3 për c në "listë" nëse c! = "i"] >>> c ["lll", "sss", "tttt"] >>> c = [c + d për c në "listë" nëse c! = "i" për d në "spam" nëse d! = "a"] >>> c ["ls", "lp", "lm", "ss", "sp", "sm", "ts", "tp", "tm"]

Por në raste komplekse, është më mirë të përdorni një lak të rregullt për të gjeneruar lista.

Listoni funksionet dhe metodat

Krijo krijuar, tani duhet të bësh diçka me listën. Për listat, janë të disponueshme metodat bazë dhe ato të listës.

Lista e metodave të tabelës

MetodaÇfarë po bën ai
listë.shtoj(x)Shton një artikull në fund të listës
listë.zgjeroj(L)Zgjeron listën duke i bashkuar të gjithë elementët e L-së në fund
listë.futje(i, x)Fut vlerën x në elementin i-të
listë.heq(x)Heq elementin e parë në listë që ka vlerën x. ValueError nëse nuk ekziston një element i tillë
listë.pop([i])Heq elementin i-të dhe e kthen atë. Nëse nuk specifikohet asnjë indeks, elementi i fundit hiqet
listë.indeks(x,])Rikthen pozicionin e elementit të parë me një vlerë x (gjatë kërkimit nga fillimi në fund)
listë.numëroj(x)Rikthen numrin e elementeve me vlerë x
listë.radhisë() Rendit listën bazuar në një funksion
listë.mbrapsht() Zgjeron listën
listë.kopje() Kopje e cekët e listës
listë.i qartë() Pastron listën

Duhet të theksohet se metodat e listave, në ndryshim nga, modifikojnë vetë listën, dhe për këtë arsye rezultati i ekzekutimit nuk ka nevojë të shkruhet në këtë variabël.

>>> l = [1, 2, 3, 5, 7] >>> l. rendit () >>> l >>> l = l. rendit () >>> print (l) Asnjë

Dhe së fundi, shembuj të punës me lista:

>>> a = [66.25, 333, 333, 1, 1234.5] >>> printim (a. numërim (333), a. numërim (66.25), a. numërim ("x")) 2 1 0 >>> a. insert (2, - 1) >>> a. shtoj (333) >>> a >>> a. indeksi (333) 1 >>> a. hiq (333) >>> a >>> a. anasjelltas () >>> a >>> a. rendit () >>> a [-1, 1, 66.25, 333, 333, 1234.5]

Herë pas here, për të rritur performancën, listat zëvendësohen me ato shumë më pak fleksibël.

Për t'iu përgjigjur kësaj pyetjeje, më duhet të shpjegoj karakteret e egra të pakufishme dhe karakteret e ngurta të kufizuara.
Përmbajtja e këtij postimi është përpiluar nga dokumentacioni java.

1. Shenja të pakufizuara

Lloji i shkronjave të pakufizuara specifikohet duke përdorur karakterin wildcard (?), Për shembull, List... Kjo quhet një listë e llojit të panjohur. Ekzistojnë dy skenarë ku një shkronjë e pakufizuar është një qasje e dobishme:

    Nëse shkruani një metodë që mund të zbatohet duke përdorur funksionet e dhëna në Objekt.

    Kur kodi përdor metoda në një klasë gjenerike që janë të pavarura nga parametri i tipit. Për shembull, List.size ose List.clear. Në fakt, Classaq shpesh përdoret sepse shumica e metodave nga Class nuk varen nga T.

2. Shenja të kufizuara

Konsideroni një aplikacion të thjeshtë vizatimi që mund të vizatojë forma të tilla si drejtkëndësha dhe rrathë. Për të përfaqësuar këto forma brenda një programi, mund të përcaktoni një hierarki klase si p.sh.

klasa abstrakte publike Shape (vizatimi abstrakt publik i zbrazët (Canvas c);) klasa publike Rrethi zgjeron Formën (int private x, y, rreze; vizatim publik i zbrazët (Canvas c) (...)) klasa publike Rectangle extensions Shape (private int x, y, gjerësia, lartësia; vizatim publik bosh (kanavacë c) (...))

Këto klasa mund të vizatohen në kanavacë:

Kanavacë e klasës publike (vizatimi publik i zbrazët (Forma s) (s.draw (kjo);))

Çdo vizatim zakonisht përmban disa forma. Duke supozuar se ato janë paraqitur si një listë, do të ishte e përshtatshme të kishim një metodë në Canvas që i vizaton të gjitha:

publik void vizatoni Të gjitha (Lista forma) (për (Forma s: forma) (s.vizato (kjo);))

Rregullat e tipit tani thonë se drawAll () mund të thirret vetëm në lista të formës saktësisht: nuk mund, për shembull, të thirret në një listë. ... Kjo është për të ardhur keq pasi e gjithë metoda lexon forma nga lista, kështu që po aq lehtë mund të thirret në një listë ... Ne me të vërtetë duam që metoda të pranojë një listë të çdo forme: public void drawAll (format e listave) (...) Këtu është një ndryshim i vogël por shumë i rëndësishëm: ne kemi zëvendësuar llojin List në Listë... Tani drawAll () do të pranojë lista të çdo nënklase Shape, kështu që tani mund ta quajmë atë nëse duam.

Listëështë një shembull i një shablloni të kufizuar. ? tregon një lloj të panjohur, megjithatë në këtë rast dimë se ky lloj i panjohur është në fakt një nënlloj i Shape. (Shënim: mund të jetë vetë forma ose ndonjë nënklasë, ajo nuk duhet të zgjasë fjalë për fjalë formën.) Ne themi se Forma është sipërme të lidhur wildcard.

Në mënyrë të ngjashme, sintaksa? super T, e cila është një karakteristikë e kufizuar, tregon një lloj të panjohur që është një superlloj i T. A ArrayedHeap280për shembull përfshin ArrayedHeap280 , ArrayedHeap280 dhe ArrayedHeap280 ... Siç mund ta shihni në dokumentacionin java për klasën Integer, Integer është një nënklasë e Numberit, e cila nga ana tjetër është një nënklasë e Object.

Një nga tiparet kryesore të Python që e bën atë kaq popullor është thjeshtësia e tij. Lehtësia e punës me struktura të ndryshme të dhënash - lista, tuple, fjalorë dhe grupe - është veçanërisht mbresëlënëse. Sot do të shqyrtojmë punoni me lista.

Çfarë është një listë në Python?

Lista është një strukturë të dhënash për ruajtjen e objekteve të llojeve të ndryshme. Nëse keni përdorur gjuhë të tjera programimi, atëherë duhet të njiheni me konceptin e një grupi. Pra, një listë është shumë e ngjashme me një grup, vetëm, siç u përmend më lart, mund të ruani objekte të llojeve të ndryshme në të. Madhësia e listës nuk është statike, ajo mund të ndryshohet. Një listë është, për nga natyra e saj, një lloj i ndryshueshëm i të dhënave. Ju mund të lexoni në detaje rreth llojeve të të dhënave.... Një variabël, i përcaktuar si një listë, përmban një referencë për një strukturë në memorie, e cila nga ana tjetër mban referenca për një objekt ose strukturë tjetër.

Si ruhen listat në memorie?

Siç u përmend më lart, një listë është një lloj i ndryshueshëm i të dhënave. Kur krijohet, rezervohet një zonë në memorie, e cila në mënyrë konvencionale mund të quhet "kontejner", në të cilën ruhen referencat ndaj elementëve të tjerë të të dhënave në memorie. Ndryshe nga llojet e tilla të të dhënave si numri ose vargu, përmbajtja e "kontejnerit" të listës mund të ndryshohet. Për ta vizualizuar më mirë këtë proces, hidhini një sy fotos më poshtë. Fillimisht, pas operacionit u krijua një listë që përmban referenca për objektet 1 dhe 2 a = 3, lidhja e dytë në listë filloi të tregonte objektin 3.

Krijimi, modifikimi, fshirja e listave dhe puna me elementet e saj

Ju mund të krijoni një listë në një nga mënyrat e mëposhtme.

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

Ju gjithashtu mund të krijoni një listë me një grup të dhënash të paracaktuara.

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

Nëse tashmë keni një listë dhe dëshironi të krijoni një kopje të saj, mund të përdorni metodën e mëposhtme:

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

ose bëjeni kështu:

>>> a =>>> b = lista (a)>>> printim (a)>>> printim (b)

Në rast se bëni një caktim të thjeshtë të listave me njëra-tjetrën, atëherë ndryshorja b do t'i caktohet një referencë për të njëjtin element të të dhënave në memorie që po referohet a në vend të një kopje të listës a... ato. nëse ndryshoni listën a, pastaj b do të ndryshojë gjithashtu.

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

Shtimi i një artikulli në listë bëhet duke përdorur metodën append ().

>>> a =>>> a.append (3)>>> a.append ("përshëndetje")>>> printoni (a)

Për të hequr një element nga lista, në rast se e dini vlerën e tij, përdorni metodën e heqjes (x), kjo do të heqë lidhjen e parë të këtij elementi.

>>> b =>>> printoni (b)>>> b. hiqni (3)>>> printoni (b)

Nëse keni nevojë të fshini një element sipas indeksit të tij, përdorni komandën del lista_emri [indeksi].

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

Ju mund të ndryshoni vlerën e një artikulli të listës, duke ditur indeksin e tij, duke iu qasur drejtpërdrejt.

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

Ju mund ta pastroni listën thjesht duke e rifilluar, sikur po e rikrijonit.Për të hyrë në një artikull në listë, specifikoni indeksin e atij artikulli në kllapa katrore.

>>> a =>>> a 7

Ju mund të përdorni indekse negative, në të cilin rast numërimi do të shkojë nga fundi, për shembull, për të hyrë në elementin e fundit të listës, mund të përdorni komandën e mëposhtme:

>>> a [- 1] 0

Për të marrë nga lista një nënlistë në një gamë të caktuar indeksesh, specifikoni indeksin e fillimit dhe të mbarimit në kllapa katrore, të ndara me dy pika.

>>> a

Listoni metodat

list.shtoj (x)

Shton një artikull në fund të listës. I njëjti operacion mund të bëhet në këtë mënyrë a = [x].

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

list.zgjero (L)

Zgjeron një listë ekzistuese duke shtuar të gjithë artikujt nga lista L... Ekuivalente me komandën a = L.

>>> a =>>> b =>>> a.extend (b)>>> print (a)

list.insert (i, x)

Fut artikullin x në pozicion i... Argumenti i parë është indeksi i elementit pas të cilit elementi do të futet x.

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

list.heq (x)

Heq shfaqjen e parë të një elementi x nga lista.

>>> a =>>> a.hiq (1)>>> shtyp (a)

list.pop ([i])

Heq një element nga një pozicion i dhe e kthen atë. Nëse përdorni metodën pa argument, atëherë artikulli i fundit nga lista do të hiqet.

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

listë.pastaj ()

Heq të gjithë elementët nga lista. Ekuivalente me del a [:].

>>> a =>>> print (a)>>> a.pastaj ()>>> print (a)

list.index (x [, fillimi [, fundi]])

Kthen indeksin e artikullit.

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

list.numërimi (x)

Rikthen numrin e dukurive të një elementi x në listë.

>>> a =>>> printim (a.count (2)) 2

list.sort (çelësi = Asnjë, anasjelltas = E gabuar)

Rendit artikujt në listë në rend rritës. Për të renditur në rend të kundërt, përdorni flamurin e kundërta = E vërtetë... Opsionet shtesë hapin parametrin Celës, shikoni dokumentacionin për më shumë detaje.

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

listë.mbrapa ()

Kthejeni rendin e artikujve në listë.

>>> a =>>> a.reverse ()>>> print (a)

listë.kopje ()

Kthen një kopje të listës. Ekuivalente me një [:].

>>> a =>>> b = a.kopjoni ()>>> printoni (a)>>> printoni (b)>>> b = 8>>> printoni (a)>>> printoni (b)

Lista e kuptimeve

Lista e kuptimeve e përkthyer më shpesh në Rusisht si një abstraksion i listave ose përfshirja e listave, është një pjesë e sintaksës së gjuhës që ofron një mënyrë të thjeshtë për të ndërtuar lista.Puna më e lehtë listoni të kuptuarit tregojnë me shembull. Le të themi se ju duhet të krijoni një listë të numrave të plotë nga 0 përpara n, ku n paracaktuar. Mënyra klasike për të zgjidhur këtë problem do të duket kështu:

N = int (hyrje ()) a = për i në intervalin (n): a.shtoj (i) printim (a)

Përdorimi listoni të kuptuarit e bën shumë më të lehtë:

N = int (hyrje ()) a = printim (a)

ose në përgjithësi si kjo, në rast se nuk keni nevojë të përdorni më n:

A = printim (a)

P.S.

Nëse jeni të interesuar për temën e analizës së të dhënave, atëherë ju rekomandojmë që të njiheni me bibliotekën Pandat... Në faqen tonë të internetit mund të gjeni Të gjitha mësimet e bibliotekës Pandat mbledhur në libër

Artikujt kryesorë të lidhur