Kaip naudotis sąrašo supratimu „Python“

Kaip naudotis sąrašo supratimu „Python“

Savalaikis sąrašo supratimo naudojimas „Python“ gali palengvinti pasikartojančias sąrašo operacijas. Tai ne tik viena eilutė, bet ir lengviau skaitoma bei efektyvesnė.





Tačiau, jei nežinote, kaip ja naudotis, galite susigaudyti. Tai gali būti dar labiau varginanti, jei nežinote, kur ją pritaikyti savo kode. Čia parodysime, kaip naudoti „Python“ sąrašo supratimą, pateikdami keletą realių pavyzdžių.





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

Lengva sukurti elementų sąrašą naudojant „Python“. Tačiau užduotis gali tapti šiek tiek varginanti, kai reikia sugeneruoti verčių ar elementų sąrašą iš matematinių ar eilutės operacijų. Būtent tada gali būti naudinga naudoti sąrašo supratimą.





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

kaip žiūrėti „netflix“ su draugais internete

Priešingai, jis sukuria naujus elementus ir prideda juos prie tuščio sąrašo, kurį jis automatiškai paskelbia. Taigi vietoj to, kad rankiniu būdu sudarytumėte tuščią sąrašą ir pridėtumėte jį prie a dėl ciklą, „Python“ sąrašo supratimas leidžia tai padaryti automatiškai, nesirūpinant, kaip atsiranda naujas sąrašas.



Terminas „sąrašo supratimas“ kilęs iš to, kad visos operacijos yra „Python“ sąraše, priskirtame įvardintam kintamajam. Kaip 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, jūs taip pat galite naudoti sąrašo supratimą kitais tikslais. Taip yra todėl, kad jis sukrauna išraiškas į atskirus kintamuosius. Taigi vėliau galite kreiptis į juos.





Pavyzdžiui, tu gali būti grandyti svetainę naudojant „BeautifulSoup“ . Tarkime, kad iš svetainės ketinate gauti visų prekių pavadinimus ir jų kainas.

Tada nuspręsite įdėti nuskaitytus duomenis į CSV arba „Excel“ failą. Ideali praktika yra nubrėžti visų prekių pavadinimus ir jų kainas bei sudėti jas į atskirus stulpelius. Tačiau tokiu atveju naudojant sąrašo supratimą užtikrinama, kad nuskaityti duomenys būtų skirti tam skirtiems kintamiesiems. Vėliau tokius kintamuosius galėsite konvertuoti į „Python DataFrame“.





Pažvelkite į žemiau pateiktą pavyzdį:

Products = [i.text for i in bs.find_all('name tags')]
Price = [i.text for i in bs.find_all('price tags')]

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

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

The dėl kilpa yra esminis sąrašo supratimo iteratorius. Paprastai „Python“ sąrašas suprantamas tokiu formatu:

ComprehensionVariable = [expression for items in list]

Spausdinimas SupratimasKintamas išvardija aukščiau pateikto kodo rezultatą kaip sąrašą.

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

Pavyzdžiui, tegul naudokite atvirą ciklą kad gautumėte visų trijų kartotinių sąrašą nuo 1 iki 30:

myList = []
for i in range(1, 11):
myList.append(i * 3)
print(myList)
Output: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

Norėdami palyginti abu, atlikime tą patį, naudodamiesi sąrašo supratimu:

multiplesOf3 = [i*3 for i in range(1, 11)]
print(multiplesOf3)
Output = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

Sąrašo supratimą taip pat galite naudoti su sąlyginiais teiginiais. Žemiau pateiktas pavyzdinis kodas spausdina visus nelyginius skaičius nuo 1 iki 10:

oddNumbers = [i for i in range(1, 11) if not i%2==2]
print(oddNumbers)
Output = [1, 3, 5, 7, 9]

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

myList = []
for i in range(1, 11):
if not i%2 == 0:
myList.append(i)
print(myList)
Output: [1, 3, 5, 7, 9]

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

Sąrašo supratimas taip pat priima įterptus teiginius:

oddNumbers = [i for i in range(1, 11) if not i%2==0 if i<4]
print(oddNumbers)
Output: [1, 3]

Tai taip pat užtrunka lizdą dėl kilpa:

someNums = [[i*2 for i in range(1, 3)] for _ in range(4)]
print(someNums)

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

someNums = [i*2 for i in range(1, 3) for k in range(4)]

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

word = ['This is a python list comprehension tutorial']
wordCounter = [i.count(' ') + 1 for i in word]
print(wordCounter)
Output: 7

Sąrašo supratimas taip pat gali priimti funkciją, atliekančią tam tikrą operaciją. Norėdami pamatyti, kaip tai veikia, įterpiame daugiklio funkciją, kuri gauna lyginius skaičius:

Numbers = [4, 7, 8, 15, 17, 10]
def multiplier(n):
multiple = n*2
return multiple
multipleEven = [multiplier(i) for i in Numbers if i%2==0]
print(multipleEven)
Output: [8, 16, 20]

Vis tiek galite parašyti aukščiau esantį kodą vienoje funkcijoje, nenaudodami supratimo. Tačiau sąrašo supratimas yra naudingas, kai reikia atlikti keletą pakartojimų ir kiekvieną iš jų sudėti į atskirus kintamuosius.

Pavyzdžiui, galite atlikti kitą operaciją n ir turėti tam skirtą kintamąjį. Pakeiskime aukščiau pateiktą supratimą, kad iš nelyginių gautume lyginius skaičius:

multipleEvenFromOdds = [multiplier(i) for i in Numbers if not i%2==0]
print(multipleEvenFromOdds)
Output: [14, 30, 34]

Žodynas ir rinkinių supratimas

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

Peržiūrėkite žemiau pateiktą žodyno supratimo pavyzdį, kad pamatytumėte, kaip jis veikia:

corresponding = {i: i*2 for i in range(10) if not i%2==0}
print(corr)
Output: {1: 2, 3: 6, 5: 10, 7: 14, 9: 18}

Aukščiau pateiktas kodas kartoja skaičių skaičių nuo 1 iki 9 ir daro juos klavišais. Tada „Python“ nurodo kiekvieną raktą padauginti iš dviejų. Galiausiai, šios operacijos rezultatai pateikiami kaip atitinkamos kiekvieno gauto masyvo rakto vertės.

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

Aibės supratimas yra šiek tiek panašus į sąrašo supratimą. Pateikiame rinkinio supratimo pavyzdį:

kiek kainuoja „spotify premium“ šeima
numbers = {i**(2) for i in range(10) if i%4==0}
print(numbers)
Output: {0, 16, 64}

Tačiau, skirtingai nei sąrašo supratimas, rinkinio supratimas pašalina dublikatus:

nums = {i for i in range(20) if i%2==1 for k in range(10) if k%2==1}
print(nums)
Output: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}

Galite išbandyti aukščiau esantį kodą naudodami sąrašo supratimą, kad pamatytumėte, kuo jie skiriasi.

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

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

Vienas iš sąrašo supratimo tikslų yra supaprastinti kodą ir padaryti jį skaitomesnį. Taigi, įsitikinkite, kad išvengiate sudėtingumo, kai susiduriate su juo. Pavyzdžiui, ilgas „Python“ supratimas gali būti sudėtingas skaityti. Tai žlugdo jo tikslą.

Dalintis Dalintis „Tweet“ Paštu Kaip naudoti „Python“ sąrašo supratimus (ir kada jų nenaudoti)

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

Skaityti toliau
Susijusios temos
  • Programavimas
  • Python
Apie autorių Idisou Omisola(Paskelbti 94 straipsniai)

Idowu aistringai domisi visomis išmaniosiomis technologijomis ir produktyvumu. Laisvalaikiu jis žaidžia koduodamasis ir nuobodžiai persijungia į šachmatų lentą, tačiau taip pat mėgsta retkarčiais atitrūkti nuo rutinos. Jo aistra parodyti žmonėms kelią aplink šiuolaikines technologijas skatina jį daugiau rašyti.

Daugiau iš Idowu Omisola

Prenumeruokite mūsų naujienlaiškį

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

Norėdami užsiprenumeruoti, spustelėkite čia