Programiranje

Kako delati s podatkovnim tipom seznama Python

Python je opremljen z zbirko vgrajenih podatkovnih vrst, ki olajšajo običajne operacije premeščanja podatkov. Med njimi jeseznam, preprost, a vsestranski tip zbirke. S seznamom Python lahko predmete Python združite v enodimenzionalno vrstico, ki omogoča dostop do predmetov po položaju, dodajanje, odstranjevanje, razvrščanje in razdeljevanje.

Osnove seznama Python

Določitev seznama v Pythonu je enostavna - samo uporabite sintakso oklepajev za označevanje elementov na seznamu.

list_of_ints = [1, 2, 3]

Tudi elementi na seznamu ne smejo biti iste vrste. Lahko so kateri koli objekt Python. (Tu predpostavimoTri je funkcija.)

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

Upoštevajte, da lahko mešanje predmetov na seznamu vpliva na razvrščanje seznama. V to bomo šli kasneje.

Največji razlog za uporabo seznama je iskanje predmetov po njih položaj na seznamu. Za to uporabite Pythonov indeksni zapis: številka v oklepajih, začenši z 0, ki označuje položaj elementa na seznamu.

Za zgornji primer list_of_ints [0] donosi 1. list_of_ints [1] donosi 2. seznam_objektov [4] bi bilNobenega predmet.

Indeksiranje seznama Python

Če za indeks uporabite pozitivno celo število, celo število označuje položaj predmeta, ki ga želite iskati. Če pa uporabitenegativno celo število, potem celo število označuje položaj, ki se začne odkonec seznama. Na primer z uporabo indeksa -1 je priročen način za zajem zadnjega elementa s seznama, ne glede na njegovo velikost.

seznam_inč [-1] donosi3seznam_objektov [-1] donosiNobenega.

Kot indeks lahko uporabite tudi celoštevilčno spremenljivko. Čex = 0seznam_int [x] prinaša 1 itd.

Dodajanje in odstranjevanje elementov seznama Python

Python ima več načinov, kako lahko dodate ali odstranite elemente s seznama.

  • .append () vstavi element vkonec seznama. Na primer, list_of_ints.append (4) bi se obrnillist_of_ints na seznam[1,2,3,4]. Dodatek je hiter in učinkovit; približno enak čas traja, da dodate en element na seznam, ne glede na to, kako dolg je seznam.
  • .pop () odstrani in vrne zadnji element s seznama. Če bi teklix = seznam_int.pop () na izvirnikulist_of_ints, x bi vseboval vrednost3. (Ni vam treba dodeliti rezultatov.pop () na vrednost, če je ne potrebujete.).pop ()operacije so tudi hitre in učinkovite.
  • .vstavi() vstavi element na poljuben položaj na seznamu. Na primer,list_of_ints.insert (0,10) bi se obrnillist_of_ints v [10,1,2,3]. Upoštevajte, da bližje kot vstavite na sprednji del seznama, počasneje bo to dejanje, čeprav ne boste videli večje upočasnitve, razen če je na vašem seznamu več tisoč elementov ali če vstavke izvajate v tesni zanki.
  • .pop (x) odstrani element v indeksux. Torejlist_of_ints.pop (0) bi odstranil element z indeksom 0. Še enkrat, bližje kot ste sprednjemu delu seznama, počasnejša je ta operacija.
  • .remove (element) odstrani element s seznama, vendarne na podlagi njegovega indeksa. Raje, .Odstrani() odstraniprvi pojav predmeta, ki ste ga določili, z iskanjem od vrha seznama navzdol. Za[3,7,7,9,8] .odstrani (7), prvi7 bi bil odstranjen, kar bi imelo za posledico seznam[3,7,9,8]. Tudi ta operacija se lahko upočasni za velik seznam, saj mora teoretično prehoditi celoten seznam, da deluje.

Rezanje seznama Python

Sezname lahko razdelimo na nove sezname, kar imenujemo postopekrezanje. Sintaksa rezin Pythona vam omogoča, da določite, kateri del seznama želite izrezati in kako ravnati z odrezanim delom.

Zgoraj ste videli, kako z zapisom oklepajev pridobite posamezen element s seznama: moj_list [2], na primer. Rezine uporabljajo različico istega zapisa indeksa (in po istih pravilih indeksiranja): list_object [start: stop: step].

  • začetek je položaj na seznamu za začetek rezine.
  • ustavi se je položaj na seznamu, kjer ustavimo rezanje. Z drugimi besedami,ta položaj in vse po njem je izpuščeno.
  • korak je neobvezen kazalnik "vsak n-ti element" za rezino. Privzeto je to1, tako da rezina zadrži vsak element s seznama, s katerega je narezan. Nastavite korak do2, izbrali boste vsak drugi element itd.

Tu je nekaj primerov. Upoštevajte ta seznam:

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

seznam rezin [0: 5] = [1, 2, 3, 4, 5]

(Upoštevajte, da se ustavimo pri indeksu 4, ne pri indeksu 5!)

seznam rezin [0: 5: 2] = [1, 3, 5]

Če izpustite določen indeks rezine, Python prevzame privzeto. Pustite začetni indeks in Python predpostavlja začetek seznama:

seznam rezin [: 5] = [1, 2, 3, 4, 5]

Pustite indeks stop in Python prevzame konec seznama:

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

Thekorak element lahko tudinegativno. Tako lahko vzamemo rezine, ki so obrnjene kopije izvirnika:

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

Upoštevajte, da lahko rezite v obratni smeri z uporabo indeksov za zagon in zaustavitev, ki gredo nazaj, ne naprej:

seznam rezin [5: 2: -1] = [6, 5, 4]

Upoštevajte tudi, da so rezine seznamovkopije prvotnega seznama. Prvotni seznam ostane nespremenjen.

[Tudi o: Najboljši brezplačni tečaji znanosti o podatkih med karanteno]

Razvrščanje seznama Python

Python ponuja dva načina za razvrščanje seznamov: iz starega lahko ustvarite nov, razvrščen seznam ali pa obstoječega seznama razvrstite na mestu. Te možnosti imajo različno vedenje in različne scenarije uporabe.

Če želite ustvariti nov, razvrščen seznam, uporabiterazvrščeno () funkcija na starem seznamu:

new_list = razvrščeno (old_list)

To bo razvrstilo vsebino seznama z uporabo Pythonovih privzetih metod razvrščanja. Pri nizih je privzeta abecedna vrstna red; za števila so naraščajoče vrednosti. Upoštevajte, da mora biti vsebina seznama dosledna, da bo to delovalo. Na primer, ne morete razvrstiti mešanice celih števil in nizov, lahko pa razvrstite seznam, ki vsebuje vsa cela števila ali vse nize. V nasprotnem primeru boste dobiliTypeError v operaciji razvrščanja.

Če želite seznam razvrstiti obratno, podajtevzvratno parameter:

new_list = razvrščeno (old_list, reverse = True)

Drugi način razvrščanja,na mestu razvrščanje izvede operacijo razvrščanja neposredno na prvotnem seznamu. Če želite to narediti, uporabite seznam.sort ()metoda:

old_list.sort ()

.sort () tudi trajavzvratno kot parameter, ki omogoča razvrščanje v obratni smeri.

Obojerazvrščeno () in.sort () vzemite tuditipko parameter. The tipko parameter vam omogoča funkcijo, s katero lahko izvedete operacijo razvrščanja po meri. Ko je seznam razvrščen, se vsak element posredujetipko funkcija, dobljena vrednost pa se uporablja za razvrščanje. Če bi imeli na primer kombinacijo celih števil in nizov in bi jih radi razvrstili, bi lahko uporabilitipko Všečkaj to:

mixed_list = [1, "2", 3, "4", None] def sort_mixed (item): try: return int (item), razen: return 0 sorted_list = sorted (mixed_list, key = sort_mixed) print (sorted_list)

Upoštevajte, da ta koda ne biPretvorba vsak element seznama v celo število! Namesto tega bi uporabil celo številovrednost vsakega predmeta kot vrednost razvrščanja. Upoštevajte tudi, kako uporabljamoposkusite / razen blok, da ujame vse vrednosti, ki se ne prevedejo čisto v celo število, in vrne0 zanje privzeto.

Pythonovi seznami niso nizi

Pomembno je vedeti o seznamih v Pythonu, da niso "nizi". Drugi jeziki, kot je C, imajo enodimenzionalne ali večdimenzionalne konstrukcije, imenovane matrike, ki sprejemajo vrednosti enega samega tipa. Seznami so heterogeni; lahko sprejmejo predmete katere koli vrste.

Še več, tamje ločenomatriko vnesite v Python. Python matriko je zasnovan tako, da posnema vedenje matrike v jeziku C in je namenjen predvsem temu, da Pythonu omogoči delo z nizi C. Thematriko type je uporaben v teh primerih, vendar boste v skoraj vseh primerih s čisto Pythonom želeli uporabiti sezname.

Kdaj uporabljati sezname Python (in kdaj ne)

Kdaj so torej Pythonovi seznami najbolj uporabni? Seznam je najboljši, kadar:

  • Stvari morate hitro najti po njihovihpoložaj v zbirki. Dostop do katerega koli položaja na seznamu traja enako dolgo, zato za iskanje niti milijontega elementa na seznamu ni kazni za uspešnost.
  • Zbirko dodajate in odstranjujete predvsem z dodajanjem na konec ali odstranjevanjem s konca na način sklada. Tudi te operacije trajajo enako dolgo, ne glede na dolžino seznama.

Seznam Python je manj primeren, če:

  • Element želite najti na seznamu, vendar ne poznate njegovega položaja. Tilahko naredi to z.index () lastnine. Na primer, lahko uporabitelist_of_ints.index (1) najti indeks prvega pojavljanja števila1 vlist_of_ints. Hitrost ne bi smela biti težava, če je vaš seznam dolg le nekaj elementov, za sezname, ki so dolgi na tisoče elementov, pa pomeni, da mora Python iskati po celotnem seznamu. Za tak scenarij uporabite slovar, kjer je vsak element mogoče najti s ključem in kjer bo čas iskanja enak za vsako vrednost.
  • Elemente želite dodati ali odstraniti s katerega koli položaja, razen s konca. Vsakič, ko to storite, se mora Python premaknitivsak drugi element pododani ali odstranjeni element. Daljši je seznam, večja je težava z zmogljivostjo. Pythonovadeque Predmet je bolj primeren, če želite prosto dodati ali odstraniti predmete z začetka ali konca seznama.

Kako narediti več s Pythonom

  • Kako zapakirati aplikacije Python v aktovko BeeWare
  • Kako zagnati Anacondo vzporedno z drugimi Pythoni
  • Kako uporabljati podatkovne razrede Python
  • Začnite z async v Pythonu
  • Kako uporabljati asyncio v Pythonu
  • 3 koraki do prenove async Pythona
  • Kako uporabiti PyInstaller za ustvarjanje izvršljivih datotek Python
  • Vadnica za Cython: Kako pospešiti Python
  • Kako namestiti Python na pameten način
  • Kako upravljati projekte Python s poezijo
  • Kako upravljati projekte Python s Pipenv
  • Virtualenv in venv: Razložena navidezna okolja Python
  • Python virtualenv in venv dela in ne sme
  • Razloženi navoji Python in podprocesi
  • Kako uporabljati razhroščevalnik Python
  • Kako uporabiti timeit za profiliranje kode Python
  • Kako uporabiti cProfile za profiliranje kode Python
  • Kako pretvoriti Python v JavaScript (in nazaj)
$config[zx-auto] not found$config[zx-overlay] not found