Programmēšana

Kā strādāt ar Python saraksta datu tipu

Python nāk ar iebūvētu datu tipu kolekciju, kas atvieglo parastās datu apstrādes darbības. Starp tiem irsarakstā, vienkāršs, bet daudzpusīgs kolekcijas veids. Izmantojot Python sarakstu, jūs varat sagrupēt Python objektus viendimensionālā rindā, kas ļauj objektiem piekļūt pēc atrašanās vietas, pievienot, noņemt, kārtot un sadalīt sīkāk.

Python saraksta pamati

Saraksta definēšana Python ir vienkārša - vienkārši izmantojiet iekavu sintaksi, lai norādītu vienumus sarakstā.

list_of_ints = [1, 2, 3]

Arī saraksta vienumiem nav jābūt vienādiem. Tie var būt jebkurš Python objekts. (Šeit pieņemTrīs ir funkcija.)

list_of_objects = ["Viens", DIVI, Trīs, {"Četri": 4}, Nav]

Ņemiet vērā, ka jauktu objektu iekļaušana sarakstā var ietekmēt saraksta šķirošanu. Mēs to aplūkosim vēlāk.

Lielākais iemesls saraksta izmantošanai ir spēja atrast objektus pēc to veida pozīciju sarakstā. Lai to izdarītu, jūs izmantojat Python indeksu apzīmējumu: skaitlis iekavās, sākot no 0, kas norāda vienuma pozīciju sarakstā.

Iepriekš minētajā piemērā list_of_ints [0] raža 1. list_of_ints [1] raža 2. objektu saraksts [4] būtuNav objekts.

Python saraksta indeksēšana

Ja indeksam izmantojat pozitīvu veselu skaitli, vesels skaitlis norāda meklējamā vienuma pozīciju. Bet, ja izmantojat anegatīvs vesels skaitlis, tad vesels skaitlis norāda pozīciju, sākot nobeigas saraksta. Piemēram, izmantojot indeksu -1 ir ērts veids, kā paņemt pēdējo vienumu no saraksta neatkarīgi no saraksta lieluma.

list_of_ints [-1] raža3objektu saraksts [-1] ražaNav.

Kā indeksu varat izmantot arī vesela skaitļa mainīgo. Jax = 0list_of_ints [x] dod 1, un tā tālāk.

Python saraksta vienumu pievienošana un noņemšana

Python ir vairāki veidi, kā jūs varat pievienot vai noņemt vienumus no saraksta.

  • .append () ievieto vienumu piebeigas saraksta. Piemēram, list_of_ints.append (4) pagrieztoslist_of_ints sarakstā[1,2,3,4]. Piederumi ir ātri un efektīvi; viena elementa pievienošana sarakstam prasa apmēram tikpat daudz laika, neatkarīgi no tā, cik garš ir saraksts.
  • .pop () noņem un atgriež pēdējo vienumu no saraksta. Ja mēs skrējāmx = list_of_ints.pop () uz oriģinālalist_of_ints, x saturētu vērtību3. (Jums nav jāpiešķir rezultāti.pop () uz vērtību, ja jums tas nav vajadzīgs.).pop ()operācijas ir arī ātras un efektīvas.
  • . ievietot () ievieto vienumu sarakstā kādā patvaļīgā vietā. Piemēram,list_of_ints.insert (0,10) pagrieztoslist_of_ints vērā [10,1,2,3]. Ņemiet vērā, ka jo tuvāk ievietosiet saraksta priekšdaļai, jo lēnāk šī darbība notiks, lai gan palēninājumu daudz neredzēsit, ja vien jūsu sarakstā nav daudz tūkstošu elementu vai ja jūs ievietojat ieliktņus cieši.
  • .pop (x) noņem vienumu indeksāx. Tātadlist_of_ints.pop (0) noņemtu vienumu indeksā 0. Atkal, jo tuvāk atrodaties saraksta priekšā, jo lēnāk var veikt šo darbību.
  • .remove (vienums) noņem vienumu no saraksta, bet pamatojoties uz tā indeksu. Drīzāk .noņemt () noņempirmā parādīšanās norādīto objektu, meklējot no saraksta augšdaļas uz leju. Priekš[3,7,7,9,8] .noņemt (7), pirmais7 tiks noņemts, kā rezultātā tiks izveidots saraksts[3,7,9,8]. Arī šī darbība var palēnināties, veidojot lielu sarakstu, jo teorētiski tai ir jāpārvar viss saraksts, lai darbotos.

Python saraksta sagriešana

Sarakstus var sadalīt jaunos sarakstos, ko sauc par procesusagriešana. Python slāņu sintakse ļauj norādīt, kuru saraksta daļu izcirst un kā manipulēt ar izgriezto daļu.

Iepriekš redzējāt, kā izmantot iekavu apzīmējumu, lai no saraksta iegūtu vienu vienumu: mans_ saraksts [2], piemēram. Šķēles izmanto viena indeksa apzīmējuma variantu (un ievēro tos pašus indeksēšanas noteikumus): list_object [sākums: apstāties: solis].

  • sākt ir pozīcija sarakstā, lai sāktu šķēli.
  • apstāties ir pozīcija sarakstā, kurā mēs pārtraucam šķēlēt. Citiem vārdiem sakot,šī nostāja un viss pēc tās tiek izlaists.
  • solis ir izvēles indikators “katrs n-tais elements” šķēlei. Pēc noklusējuma tas ir1, tāpēc šķēle saglabā visus elementus no saraksta, no kuriem tā sagriež. Iestatiet solis uz2, un jūs atlasīsit katru otro elementu utt.

Šeit ir daži piemēri. Apsveriet šo sarakstu:

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

slice_list [0: 5] = [1, 2, 3, 4, 5]

(Ņemiet vērā, ka mēs apstājamies 4., nevis 5. indeksā!)

slice_list [0: 5: 2] = [1, 3, 5]

Ja jūs izlaižat konkrētu šķēles indeksu, Python pieņem noklusējumu. Atstājiet sākuma indeksu, un Python uzņemas saraksta sākumu:

slice_list [: 5] = [1, 2, 3, 4, 5]

Atstājiet pieturas indeksu, un Python uzņemas saraksta beigas:

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

Thesolis elements var būt arīnegatīvs. Tas ļauj mums ņemt šķēles, kas ir oriģināla apgrieztas kopijas:

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

Ņemiet vērā, ka jūs varat sagriezt pretēji, izmantojot sākuma un beigu indeksus, kas iet atpakaļ, nevis uz priekšu:

slice_list [5: 2: -1] = [6, 5, 4]

Paturiet prātā arī to, ka sarakstu šķēles irkopijas sākotnējā saraksta. Sākotnējais saraksts paliek nemainīgs.

[Arī vietnē: Labākie bezmaksas datu zinātnes kursi karantīnas laikā]

Kārtot Python sarakstu

Python nodrošina divus veidus, kā kārtot sarakstus: Varat ģenerēt jaunu, sakārtotu sarakstu no vecā vai arī kārtot esošu sarakstu vietā. Šīm opcijām ir atšķirīga izturēšanās un dažādi lietošanas scenāriji.

Lai izveidotu jaunu, sakārtotu sarakstu, izmantojietsakārtots () funkcija vecajā sarakstā:

new_list = sakārtots (old_list)

Tas sakārtos saraksta saturu, izmantojot Python noklusējuma šķirošanas metodes. Virknēm pēc noklusējuma ir alfabētiskā secība; skaitļiem tā ir augšupejoša vērtība. Ņemiet vērā, ka saraksta saturam jābūt konsekventam, lai tas darbotos. Piemēram, jūs nevarat kārtot veselu skaitļu un virkņu sajaukumu, bet jūs varat kārtot sarakstu, kurā ir visi veseli skaitļi vai visas virknes. Pretējā gadījumā jūs saņemsietTypeError kārtošanas operācijā.

Ja vēlaties kārtot sarakstu pretēji, nododietreverss parametrs:

new_list = sakārtots (old_list, reverse = True)

Cits veids, kā kārtot,vietā kārtošana, veic kārtošanas darbību tieši sākotnējā sarakstā. Lai to izdarītu, izmantojiet sarakstu.sort ()metode:

old_list.sort ()

.sort () arī ņemreverss kā parametru, ļaujot kārtot otrādi.

Abisakārtots () un.sort () ņem arī ataustiņu parametrs. The taustiņu parametrs ļauj nodrošināt funkciju, kuru var izmantot, lai veiktu pielāgotu šķirošanas darbību. Kad saraksts ir sakārtots, katrs elements tiek nodotstaustiņu funkciju, un iegūto vērtību izmanto šķirošanai. Piemēram, ja mums būtu veselu skaitļu un virkņu sajaukums un mēs vēlētos tos kārtot, mēs varētu tos izmantottaustiņu kā šis:

mixed_list = [1, "2", 3, "4", Neviens] def sort_mixed (item): try: return int (item) izņemot: return 0 sorted_list = sakārtots (mixed_list, key = sort_mixed) print (sorted_list)

Ņemiet vērā, ka šis kods nebūtukonvertēt katrs saraksta elements vesels skaitlis! Drīzāk tas izmantotu veselu skaitlivērtība katra priekšmeta kā tā šķirošanas vērtību. Ņemiet vērā arī to, kā mēs izmantojam amēģināt / izņemot bloķēt, lai aizturētu visas vērtības, kas netiek skaidri pārveidotas par veselu skaitli, un atgrieztos0 viņiem pēc noklusējuma.

Python saraksti nav masīvi

Viena svarīga lieta, kas jāzina par Python sarakstiem, ir tas, ka tie nav “masīvi”. Citās valodās, piemēram, C, ir viendimensiju vai daudzdimensiju konstrukcijas, ko sauc par masīviem, kas pieņem viena veida vērtības. Saraksti ir neviendabīgi; viņi var pieņemt jebkura veida objektus.

Turklāt turir atsevišķsmasīvs ierakstiet Python. Python masīvs ir paredzēts, lai atdarinātu masīva uzvedību C, un tas galvenokārt ir paredzēts, lai ļautu Python strādāt ar C masīviem. Themasīvs tips ir noderīgs šajos gadījumos, taču gandrīz visos tīrā Python gadījumos vēlaties izmantot sarakstus.

Kad lietot Python sarakstus (un kad nē)

Tātad, kad Python saraksti ir visnoderīgākie? Saraksts ir labākais, ja:

  • Jums ātri jāatrod lietas pēc viņupozīciju kolekcijā. Piekļūšana jebkurai pozīcijai sarakstā prasa tikpat daudz laika, tāpēc nav jāmaksā izpildes sods par pat miljonā saraksta vienuma meklēšanu.
  • Jūs kolekciju pievienojat un noņemat, galvenokārt pievienojot to līdz galam vai noņemot no gala kaudzes veidā. Šīs operācijas atkal prasa vienādu laiku neatkarīgi no saraksta garuma.

Python saraksts ir mazāk piemērots, ja:

  • Jūs vēlaties atrast vienumu sarakstā, bet nezināt tā pozīciju. Jūsvar dariet to ar.index () īpašums. Piemēram, jūs varētu izmantotlist_of_ints.index (1) lai atrastu skaitļa pirmās parādīšanās indeksu1 iekšālist_of_ints. Ātrumam nevajadzētu būt problēmai, ja jūsu saraksts ir tikai daži vienumi, bet tūkstošiem vienumu gariem sarakstiem tas nozīmē, ka Python ir jāmeklē viss saraksts. Šādam scenārijam izmantojiet vārdnīcu, kur katru vienumu var atrast, izmantojot atslēgu, un kur katras vērtības meklēšanas laiks būs vienāds.
  • Jūs vēlaties pievienot vai noņemt vienumus no jebkuras pozīcijas, izņemot beigas. Katru reizi, kad jūs to darāt, Python jāpārvietojaskatru otro posteni pēcpievienoto vai noņemto vienumu. Jo garāks saraksts, jo lielāka kļūst veiktspējas problēma. Python'sdeque objekts ir labāk piemērots, ja vēlaties brīvi pievienot vai noņemt objektus no saraksta sākuma vai beigām.

Kā darīt vairāk ar Python

  • Kā iesaiņot Python lietotnes ar BeeWare portfeli
  • Kā palaist Anakondu plecu pie pleca ar citiem pitoniem
  • Kā izmantot Python datu klases
  • Sāciet darbu ar asinhronizāciju Python
  • Kā lietot asyncio Python
  • 3 soļi līdz Python asinhronajam remontam
  • Kā izmantot PyInstaller, lai izveidotu Python izpildāmos failus
  • Cython apmācība: kā paātrināt Python
  • Kā instalēt Python viedajā veidā
  • Kā pārvaldīt Python projektus, izmantojot dzeju
  • Kā pārvaldīt Python projektus ar Pipenv
  • Virtualenv un venv: paskaidrotas virtuālās Python vides
  • Python virtualenv un venv do's un don'ts
  • Paskaidrots Python vītne un apakšprocesi
  • Kā izmantot Python atkļūdotāju
  • Kā izmantot Timeit, lai profilētu Python kodu
  • Kā izmantot cProfile Python koda profilēšanai
  • Kā konvertēt Python uz JavaScript (un atkal atpakaļ)
$config[zx-auto] not found$config[zx-overlay] not found