Programavimas

Kaip dirbti su „Python“ sąrašo duomenų tipu

„Python“ komplekte yra įmontuotų duomenų tipų rinkinys, kuris palengvina įprastas duomenų apdorojimo operacijas. Tarp jų yrasąrašą, paprastas, bet universalus kolekcijos tipas. Turėdami „Python“ sąrašą, galite sugrupuoti „Python“ objektus į vienos dimensijos eilutę, kuri leidžia objektams pasiekti pagal padėtį, pridėti, pašalinti, rūšiuoti ir suskirstyti.

„Python“ sąrašo pagrindai

Sąrašą „Python“ apibrėžti paprasta - tiesiog naudokite skliaustelio sintaksę, kad nurodytumėte elementus sąraše.

list_of_ints = [1, 2, 3]

Visi sąrašo elementai taip pat neturi būti vienodo tipo. Jie gali būti bet kokie „Python“ objektai. (Čia, tarkimeTrys yra funkcija.)

list_of_objects = ["Vienas", DVI, Trys, {"Keturi": 4}, Nėra]

Atminkite, kad mišrių objektų įtraukimas į sąrašą gali turėti įtakos sąrašo rūšiavimui. Mes tai nagrinėsime vėliau.

Didžiausia priežastis naudoti sąrašą yra galimybė rasti objektus pagal juos poziciją sąraše. Norėdami tai padaryti, naudojate „Python“ indekso žymėjimą: skaičius skliausteliuose, prasidedantis 0, nurodantis elemento padėtį sąraše.

Ankstesniame pavyzdyje sąrašas_of_ints [0] derlius 1. sąrašas_of_ints [1] derlius 2. Objektų sąrašas [4] būtųNė vienas objektas.

„Python“ sąrašo indeksavimas

Jei indeksui naudojate teigiamą sveikąjį skaičių, sveikasis skaičius nurodo ieškomo elemento padėtį. Bet jei naudojate aneigiamas sveikasis skaičius, tada sveikasis skaičius rodo poziciją, prasidedančią nuogalas sąrašo. Pavyzdžiui, naudojant indeksą -1 yra patogus būdas paimti paskutinį elementą iš sąrašo, neatsižvelgiant į sąrašo dydį.

sąrašas_of_ints [-1] derlius3Objektų sąrašas [-1] derliusNė vienas.

Taip pat kaip indeksą galite naudoti sveiko skaičiaus kintamąjį. Jeix = 0list_of_ints [x] duoda 1 ir t.

„Python“ sąrašo elementų pridėjimas ir pašalinimas

„Python“ turi keletą būdų, kaip galite pridėti arba pašalinti elementus iš sąrašo.

  • .append () įterpia elementą įgalas sąrašo. Pavyzdžiui, list_of_ints.append (4) pasisuktųsąrašas_of_ints į sąrašą[1,2,3,4]. Priedai yra greiti ir efektyvūs; maždaug tiek pat laiko reikia pridėti vieną elementą prie sąrašo, nesvarbu, koks yra sąrašo ilgis.
  • .pop () pašalina ir grąžina paskutinį elementą iš sąrašo. Jei bėgtumex = list_of_ints.pop () ant originalosąrašas_of_ints, x būtų vertė3. (Jums nereikia priskirti.pop () į vertę, nors jos nereikia.).pop ()operacijos taip pat yra greitos ir efektyvios.
  • .Įdėti() įterpia elementą į kokią nors savavališką sąrašo vietą. Pavyzdžiui,sąrašas_of_ints.insert (0,10) pasisuktųsąrašas_of_ints į [10,1,2,3]. Atkreipkite dėmesį, kad kuo arčiau įterpsite į sąrašo priekį, tuo lėtesnė bus ši operacija, nors sulėtėjimo nematysite daug, nebent jūsų sąraše yra daug tūkstančių elementų arba intarpus darote glaudžiai.
  • .pop (x) pašalina elementą iš indeksox. Taigilist_of_ints.pop (0) pašalintų elementą rodyklėje 0. Vėlgi, kuo arčiau esate sąrašo priekyje, tuo lėtesnė gali būti ši operacija.
  • .pašalinti daiktą) pašalina elementą iš sąrašo, betne remiantis jo indeksu. Greičiau . pašalinti () pašalinapirmasis įvykis nurodyto objekto, ieškodami sąrašo viršuje žemyn. Dėl[3,7,7,9,8]. Pašalinti (7), Pirmas7 būtų pašalintas, todėl būtų pateiktas sąrašas[3,7,9,8]. Ši operacija taip pat gali sulėtinti didelį sąrašą, nes teoriškai ji turi pereiti visą sąrašą, kad veiktų.

„Python“ sąrašo pjaustymas

Sąrašai gali būti suskirstyti į naujus sąrašus, vadinamas procesaspjaustymas. „Python“ skiltelių sintaksė leidžia nurodyti, kurią sąrašo dalį iškirpti ir kaip manipuliuoti iškirpta dalimi.

Aukščiau matėte, kaip naudoti skliaustų užrašą norint gauti vieną elementą iš sąrašo: my_list [2], pavyzdžiui. Skiltyse naudojamas to paties indekso žymėjimo variantas (ir laikomasi tų pačių indeksavimo taisyklių): list_object [pradžia: sustabdyti: žingsnis].

  • pradžia yra vieta sąraše, kad pradėtumėte pjūvį.
  • sustabdyti yra pozicija sąraše, kurioje mes nustojame pjaustyti. Kitaip tariant,ta pozicija ir viskas po jos yra praleistas.
  • žingsnis yra pasirenkamas „kiekvieno n-to elemento“ indikatorius. Pagal nutylėjimą tai yra1, todėl griežinėlis išlaiko visus elementus iš sąrašo, kurį pjausto. Nustatyti žingsnis į2, ir jūs pasirinksite kas antrą elementą ir pan.

Štai keletas pavyzdžių. Apsvarstykite šį sąrašą:

skiltelių_ sąrašas = [1,2,3,4,5,6,7,8,9,0]

skiltelių_ sąrašas [0: 5] = [1, 2, 3, 4, 5]

(Atkreipkite dėmesį, kad mes sustojame ties 4 indeksu, o ne 5 indeksu!)

skiltelių_ sąrašas [0: 5: 2] = [1, 3, 5]

Jei praleisite konkretų skyrių indeksą, „Python“ prisiima numatytąjį nustatymą. Palikite pradžios indeksą, o „Python“ prisiima sąrašo pradžią:

skiltelių_ sąrašas [: 5] = [1, 2, 3, 4, 5]

Palikite stotelės rodyklę, o „Python“ prisiima sąrašo pabaigą:

skiltelių_ sąrašas [4:] = [5, 6, 7, 8, 9, 0]

žingsnis elementas taip pat gali būtineigiamas. Tai leidžia mums paimti dalis, kurios yra atvirkštinės originalo kopijos:

skiltelių sąrašas [:: - 1] = [0, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Atminkite, kad galite pjaustyti atvirkščiai naudodami pradžios ir pabaigos indeksus, kurie eina atgal, o ne į priekį:

skiltelių sąrašas [5: 2: -1] = [6, 5, 4]

Taip pat nepamirškite, kad sąrašų skiltelės yraegzempliorių pirminio sąrašo. Pirminis sąrašas lieka nepakitęs.

[Taip pat: Geriausi nemokami duomenų mokslo kursai karantino metu]

„Python“ sąrašo rūšiavimas

„Python“ pateikia du sąrašų rūšiavimo būdus: galite sugeneruoti naują, surūšiuotą sąrašą iš senojo arba surūšiuoti esamą sąrašą vietoje. Šios parinktys turi skirtingą elgesį ir skirtingus naudojimo scenarijus.

Norėdami sukurti naują, surūšiuotą sąrašą, naudokiterūšiuojamas () funkcija senajame sąraše:

naujas_ sąrašas = rūšiuojamas (senas_ sąrašas)

Tai surūšiuos sąrašo turinį, naudojant numatytuosius „Python“ rūšiavimo metodus. Eilučių atveju numatytasis nustatymas yra abėcėlės tvarka; skaičiams tai didėjančios vertės. Atminkite, kad sąrašo turinys turi būti nuoseklus, kad tai veiktų. Pvz., Negalite rūšiuoti sveikų skaičių ir eilučių derinio, bet galite surūšiuoti sąrašą, kuris yra visas skaičius arba visos eilutės. Priešingu atveju gausiteTypeError rūšiavimo operacijoje.

Jei norite rūšiuoti sąrašą atvirkščiai, perduokiteatvirkščiai parametras:

new_list = rūšiuojamas (old_list, reverse = True)

Kitas būdas rūšiuoti,vietoje rūšiavimas, atlieka rūšiavimo operaciją tiesiai į pradinį sąrašą. Norėdami tai padaryti, naudokite sąrašą.sort ()metodas:

old_list.sort ()

.sort () taip pat imasiatvirkščiai kaip parametrą, leidžiantį rūšiuoti atvirkščiai.

Tiekrūšiuojamas () ir.sort () taip pat paimkite aRaktas parametras. Raktas parametras leidžia pateikti funkciją, kurią galima naudoti pritaikius rūšiavimo operaciją. Kai sąrašas rūšiuojamas, kiekvienas elementas perduodamasRaktas funkcija, o gauta reikšmė naudojama rūšiavimui. Pavyzdžiui, jei turėtume skaičių ir eilučių derinį ir norėtume juos rūšiuoti, galėtume naudotiRaktas kaip šitas:

mixed_list = [1, "2", 3, "4", Nėra] def sort_mixed (item): try: return int (item) išskyrus: return 0 sorted_list = sorted (mixed_list, key = sort_mixed) print (sorted_list)

Atminkite, kad šis kodas nebusPaversti kiekvieną sąrašo elementą į sveiką skaičių! Veikiau būtų naudojamas sveikasis skaičiusvertė kiekvieno elemento kaip jo rūšiavimo vertė. Taip pat atkreipkite dėmesį, kaip mes naudojame apabandyti / išskyrus užblokuokite, kad sulaikytumėte bet kokias vertes, kurios nėra aiškiai paverstos sveikuoju skaičiumi, ir grįžkite0 jiems pagal nutylėjimą.

„Python“ sąrašai nėra masyvai

Vienas svarbus dalykas, kurį reikia žinoti apie „Python“ sąrašus, yra tai, kad jie nėra „masyvai“. Kitose kalbose, pavyzdžiui, C, yra vienmatės ar daugialypės konstrukcijos, vadinamos masyvais, kurios priima vieno tipo vertes. Sąrašai yra heterogeniški; jie gali priimti bet kokio tipo objektus.

Dar daugiau, tenyra atskirasmasyvas įveskite „Python“. „Python“ masyvas yra skirtas mėgdžioti masyvo elgesį C, ir jis visų pirma skirtas leisti „Python“ dirbti su C masyvais.masyvas tipas yra naudingas tais atvejais, tačiau beveik visais „Python“ atvejais norėsite naudoti sąrašus.

Kada naudoti „Python“ sąrašus (o kada ne)

Taigi, kada „Python“ sąrašai yra naudingiausi? Sąrašas yra geriausias, kai:

  • Turite greitai rasti daiktus pagal juospoziciją kolekcijoje. Patekimas į bet kurią sąrašo poziciją užima tiek pat laiko, todėl už milijoninio sąrašo elemento paiešką netaikoma jokia bauda.
  • Prie kolekcijos pridedate ir pašalinate daugiausia pridėdami iki galo arba pašalindami iš galo rietuvės būdu. Vėlgi, šios operacijos užima tiek pat laiko, neatsižvelgiant į sąrašo ilgį.

„Python“ sąrašas yra mažiau tinkamas, kai:

  • Norite rasti elementą sąraše, bet nežinote jo padėties. Tugali daryk tai su.indeksas() nuosavybė. Pavyzdžiui, galite naudotilist_of_ints.index (1) surasti pirmo skaičiaus atsiradimo indeksą1 įsąrašas_of_ints. Greitis neturėtų būti problema, jei jūsų sąrašas yra tik kelių elementų ilgio, tačiau norint išvardyti tūkstančius elementų, tai reiškia, kad „Python“ turi ieškoti visame sąraše. Tokiam scenarijui naudokite žodyną, kuriame kiekvieną elementą galima rasti naudojant raktą ir kur kiekvienos vertės paieškos laikas bus vienodas.
  • Norite pridėti arba pašalinti elementus iš bet kurios pozicijos, išskyrus pabaigą. Kiekvieną kartą, kai tai darote, „Python“ turi judėtikas antras daiktas popridėtas ar pašalintas elementas. Kuo ilgesnis sąrašas, tuo didesnė našumo problema. „Python“deque objektas geriau tinka, jei norite laisvai pridėti objektus arba juos pašalinti iš sąrašo pradžios ar pabaigos.

Kaip padaryti daugiau su „Python“

  • Kaip supakuoti „Python“ programas su „BeeWare“ portfeliu
  • Kaip paleisti „Anaconda“ šalia kitų Pitonų
  • Kaip naudoti „Python“ duomenų klases
  • Pradėkite naudoti „Python“ asinchronizavimą
  • Kaip naudoti „asyncio“ Python
  • 3 žingsniai iki „Python“ asinchroninio remonto
  • Kaip naudoti „PyInstaller“, norint sukurti „Python“ vykdomuosius failus
  • „Cython“ pamoka: kaip pagreitinti „Python“
  • Kaip įdiegti „Python“ išmaniuoju būdu
  • Kaip valdyti „Python“ projektus naudojant „Poeziją“
  • Kaip valdyti „Python“ projektus naudojant „Pipenv“
  • „Virtualenv“ ir „venv“: paaiškintos „Python“ virtualios aplinkos
  • „Python virtualenv“ ir „venv do and donts“
  • Paaiškinta „Python“ sriegimas ir antriniai procesai
  • Kaip naudotis „Python“ derintuvu
  • Kaip naudoti „Timeit“, kad būtų galima nustatyti „Python“ kodą
  • Kaip naudoti „cProfile“ „Python“ kodui nustatyti
  • Kaip konvertuoti „Python“ į „JavaScript“ (ir dar kartą)