Laiku panaudojus sąrašo supratimą „Python“, galite lengvai atlikti iteracines sąrašo operacijas. Be to, kad ji yra viena eilutė, ji yra geriau įskaitoma ir efektyviau vykdoma.

Tačiau jūs galite susidoroti, jei nežinote, kaip juo naudotis. Tai gali būti dar labiau varginantis, jei nežinote, kur jį pritaikyti savo kode. Čia mes parodysime, kaip naudoti „Python“ sąrašo supratimą su keletu realių pavyzdžių.

Kas yra „Python“ sąrašo supratimas ir kaip jis veikia?

Naudojant „Python“ lengva sukurti elementų sąrašą. Tačiau užduotis gali tapti šiek tiek varginanti, kai reikia sukurti vertybių ar elementų sąrašą iš matematinių ar eilučių operacijų. Būtent tada supratimas apie sąrašus gali būti naudingas.

Sąrašo supratimo naudojimo pranašumas yra tas, kad viename sąraše galite atlikti kelias operacijas.

Priešingai, jis sukuria naujus elementus ir prideda juos prie tuščio sąrašo, kurį deklaruoja automatiškai. Taigi užuot tuščią sąrašą sudarę rankiniu būdu ir pridėję jį su a dėl ciklo, „Python“ sąrašo supratimas leidžia tai padaryti automatiškai, netrukdant, kaip atsiras naujas sąrašas.

instagram viewer

Sąvoka „supratimas apie sąrašą“ kyla iš to, kad visos operacijos yra „Python“ sąraše, priskirtame vardiniam kintamajam. Kaip jau minėjome anksčiau, tai leidžia atlikti konkrečias operacijas vienoje kodo eilutėje. Tada jis prideda išvestį prie naujo sąrašo.

Galų gale sąrašo supratimą galite naudoti ir kitiems tikslams. Taip yra todėl, kad jis kaupia išraiškas atskirais kintamaisiais. Taigi galite kreiptis į juos vėliau.

Pavyzdžiui, jūs galite būti nurašyti svetainę naudojant „BeautifulSoup“. Tarkime, kad ketinate iš visų svetainių sužinoti visų prekių pavadinimus ir jų kainas.

Tada nuspręsite nukopijuotus duomenis įdėti į CSV arba „Excel“ failą. Idealiausia praktika yra subraižyti visų daiktų pavadinimus ir jų kainas bei įdėti juos į atskirus stulpelius. Tačiau tokiu atveju naudodamiesi supratimo sąrašu užtikrinsite, kad surinktus duomenis turėsite tam skirtuose kintamuosiuose. Vėliau tokius kintamuosius galite konvertuoti į „Python DataFrame“.

Pažvelkite į toliau pateiktą pavyzdį:

Produktai = [i.tekstas i bs.find_all ('vardų žymos')]
Kaina = [i.tekstas i bs.find_all ('kainų etiketės')]

Gavę kilpinius kintamuosius, galite juos įdėti į atskirus „DataFrame“ stulpelius naudodami „Python“ pandas.

Kaip sukurti ir naudoti „Python“ sąrašo supratimą

dėl ciklas yra būtinas sąrašo supratimo iteratorius. Paprastai sąrašas Python suprantamas tokiu formatu:

ComprehensionVariable = [sąrašo elementų išraiška]

Spauda SuprastiKintamas išveda aukščiau nurodyto kodo rezultatą kaip sąrašą.

Tačiau būkite atsargūs, nesupainiokite sąrašo supratimo su atviru dėl kilpa.

Pavyzdžiui, leiskime naudokite „open for loop“ Norėdami gauti visų trijų kartotinių nuo 1 iki 30 sąrašą:

„myList“ = []
i diapazone (1, 11):
„myList.append“ (i * 3)
spausdinti („myList“)
Išvestis: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

Norėdami palyginti abu dalykus, atlikime tą patį dalyką naudodami supratimą apie sąrašą:

daugiklisOf3 = [i * 3 i diapazone (1, 11)]
spausdinti (multipleksai3)
Išvestis = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

Sąrašo supratimą galite naudoti ir su sąlyginiais teiginiais. Žemiau pateiktas kodo pavyzdys išspausdina visus nelyginius skaičius nuo 1 iki 10:

oddNumbers = [i i diapazone (1, 11), jei ne i% 2 == 2]
spausdinti (nelyginiai skaičiai)
Išvestis = [1, 3, 5, 7, 9]

Dabar taip pat perrašykime aukščiau esantį kodą naudodami „open“ dėl kilpa:

„myList“ = []
i diapazone (1, 11):
jei ne, i% 2 == 0:
„myList.append“ (i)
spausdinti („myList“)
Išvestis: [1, 3, 5, 7, 9]

Susijęs: Kaip pridėti sąrašą „Python“

Sąrašo supratimas taip pat priima lizdus, ​​jei teiginiai:

oddNumbers = [i i i diapazone (1, 11), jei ne i% 2 == 0, jei i <4]
spausdinti (nelyginiai skaičiai)
Išvestis: [1, 3]

Taip pat reikia įdėti dėl kilpa:

someNums = [[i * 2 už i diapazone (1, 3)] už _ diapazone (4)]
spausdinti (someNums)

Taip pat galite turėti paprastą lizdą dėl kilpa sąrašo supratime:

someNums = [i * 2 i i diapazone (1, 3) k diapazone (4)]

Taip pat galite manipuliuoti eilutėmis suprasdami „Python“ sąrašą. Pažvelkime į žodžių skaitiklio supratimą žemiau:

word = ["Tai yra pitonų sąrašo supratimo pamoka"]
wordCounter = [i.count ('') + 1 for i in word]
spausdinti (wordCounter)
Išvestis: 7

Sąrašo supratimas taip pat gali priimti funkciją, atliekančią konkrečią operaciją. Įterpime daugiklio funkciją, kuri pateikia lyginius skaičius į sąrašo supratimą, kad pamatytume, kaip tai veikia:

Skaičiai = [4, 7, 8, 15, 17, 10]
def daugiklis (n):
daugkartinis = n * 2
grąžinti kelis
multipleEven = [daugiklis (i) i skaičiuose, jei i% 2 == 0]
spausdinti (kelisEven)
Išvestis: [8, 16, 20]

Aukščiau pateiktą kodą vis tiek galite parašyti vienoje funkcijoje nenaudodami supratimo. Tačiau supratimas apie sąrašą yra naudingas, kai reikia atlikti keletą kartojimų ir kiekvieną iš jų įdėti į atskirus kintamuosius.

Pvz., Galite atlikti kitą operaciją n ir turėkite tam skirtą kintamąjį. Pakeiskime supratimą aukščiau, kad generuotume lyginius skaičius iš nelyginių:

multipleEvenFromOdds = [daugiklis (i) i skaičiuose, jei ne i% 2 == 0]
spausdinti (multipleEvenFromOdds)
Išvestis: [14, 30, 34]

Žodynas ir rinkinio supratimas

Be supratimo apie sąrašą, „Python“ taip pat siūlo žodyną ir nustatytą supratimo funkciją.

Pažvelkite į žemiau pateiktą žodyno supratimo pavyzdį, kad pamatytumėte, kaip jis veikia:

atitinkantis = {i: i * 2 i diapazone (10), jei ne i% 2 == 0}
spausdinti (taisyti)
Išvestis: {1: 2, 3: 6, 5: 10, 7: 14, 9: 18}

Aukščiau pateiktas kodas kartojasi per skaičių nuo 1 iki 9 sąrašą ir paverčia juos raktais. Tada jis liepia „Python“ kiekvieną raktą padauginti iš dviejų. Galiausiai pateikiami tos operacijos rezultatai kaip atitinkamos kiekvieno rakto reikšmės gautame masyve.

Susijęs: Kaip masyvai ir sąrašai veikia „Python“

Nustatytas supratimas yra šiek tiek panašus į supratimą apie sąrašą. Pateikiame supratimo pavyzdį:

skaičiai = {i ** (2) i diapazone (10), jei i% 4 == 0}
spausdinti (skaičiai)
Išvestis: {0, 16, 64}

Tačiau, skirtingai nei suprantamas sąrašas, supratimas pašalina dublikatus:

nums = {i už i diapazone (20), jei i% 2 == 1 už k diapazone (10), jei k% 2 == 1}
spausdinti (skaičiai)
Išvestis: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}

Galite išbandyti aukščiau pateiktą kodą naudodami supratimą apie sąrašą, kad sužinotumėte, kaip jie skiriasi.

Ar galite kiekvieną kartą naudoti supratimą apie sąrašą?

Mes apžvelgėme įvairius sąrašo supratimo pavyzdžius ir tai, kur galite juos naudoti. Tačiau, kaip ir bet kuris kitas „Python“ metodas, sąrašo supratimo atvejis priklauso nuo konkrečios problemos, kurią norite išspręsti. Todėl turėtumėte jį naudoti tik tuo atveju, jei tai idealiai tinka konkrečiai problemai, kurią norite išspręsti.

Vienas iš sąrašo supratimo tikslų yra supaprastinti kodą ir padaryti jį lengviau įskaitomą. Taigi, būtinai venkite sudėtingumo spręsdami tai. Pavyzdžiui, ilgas „Python“ supratimas gali tapti sudėtingas skaityti. Tai panaikina jo tikslą.

El
Kaip naudoti „Python“ sąrašo supratimą (ir kada jų nenaudoti)

Čia yra viskas, ką reikia žinoti apie šios nuostabios „Python“ funkcijos naudojimą, kuri padidins jūsų produktyvumą ir kodo įskaitomumą per naktį.

Susijusios temos
  • Programavimas
  • „Python“
Apie autorių
Idowu Omisola (Paskelbti 55 straipsniai)

Idowu yra aistringas dėl bet kokių protingų technologijų ir produktyvumo. Laisvalaikiu jis žaidžia su kodavimu ir, kai nuobodžiauja, pereina prie šachmatų lentos, tačiau taip pat mėgsta kartkartėmis atitrūkti nuo rutinos. Aistra parodyti žmonėms kelią į šiuolaikines technologijas skatina daugiau rašyti.

Daugiau iš Idowu Omisola

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kuriame rasite techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Dar vienas žingsnis…!

Prašome patvirtinti savo el. Pašto adresą el. Laiške, kurį jums ką tik išsiuntėme.

.