Loendite mõistmise kasutamine Pythonis

Loendite mõistmise kasutamine Pythonis

Loendite mõistmise õigeaegne kasutamine Pythonis võib muuta iteratiivsed loenditoimingud teie jaoks lihtsaks. Lisaks sellele, et see on üks rida, on see loetavam ja täidab tõhusamalt.





Siiski võite töötada, kui te ei tea, kuidas seda kasutada. See võib olla isegi masendavam, kui te ei tea, kus seda oma koodis rakendada. Siin näitame teile, kuidas kasutada Pythonis nimekirja mõistmist koos mõnede eluliste näidetega.





Mis on nimekirja mõistmine Pythonis ja kuidas see toimib?

Üksuste loendi loomine Pythoni abil on lihtne. Ülesanne võib aga pisut tüütuks muutuda, kui peate looma matemaatilistest või stringioperatsioonidest väärtuste või üksuste loendi. Just siis võib nimekirja mõistmise kasutamine kasuks tulla.





Loendi mõistmise kasutamise eeliseks on see, et saate ühes loendis teha mitu toimingut.

kes mind facebookis blokeerib

Seevastu loob see uusi üksusi ja lisab need automaatselt deklareeritud tühja loendisse. Nii et selle asemel, et teha tühi loend käsitsi ja lisada sellele a eest silmus, võimaldab Pythoni loendi mõistmine seda teha automaatselt, ilma et peaksite muretsema, kuidas uus loend läbi tuleb.



Mõiste „loendi mõistmine” tuleneb asjaolust, et kõik toimingud on nimega muutujale määratud Pythoni loendis. Nagu me varem märkisime, võimaldab see teil konkreetseid toiminguid teha ühes koodireas. Seejärel lisab see väljundi uuele loendile.

Lõppkokkuvõttes saate loendi mõistmise väljundit kasutada ka muudel eesmärkidel. Seda seetõttu, et see koondab avaldised eraldi muutujateks. Nii et saate neile hiljem viidata.





Näiteks võite olla veebisaidi kraapimine BeautifulSoupiga . Oletame, et kavatsete veebisaidilt saada kõigi üksuste nimed ja nende hinnad.

Seejärel otsustate kraapitud andmed CSV- või Exceli -faili panna. Ideaalne tava on kraapida kõigi esemete nimed ja nende hinnad ning paigutada mõlemad eraldi veergudesse. Kuid sellisel juhul tagab loendi mõistmine, et teil on kraapitud andmed spetsiaalsetes muutujates. Seejärel saate sellised muutujad hiljem Pythoni andmeraamiks teisendada.





Vaadake allolevat näidet:

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

Kui olete silmusmuutujad kätte saanud, saate need Pythoni Pandade abil DataFrame'i eraldi veergudesse panna.

Loendi mõistmise loomine ja kasutamine Pythonis

The eest silmus on loendi mõistmisel oluline iteraator. Üldiselt on Pythonis nimekirja mõistmine järgmine:

ComprehensionVariable = [expression for items in list]

Trükkimine ArusaamineMuutuv väljastab ülaltoodud koodi tulemuse loendina.

Olge siiski ettevaatlik, et mitte ajada loendi mõistmist lahti eest silmus.

Näiteks laseme kasutage avatud tsüklit saada kõigi kolme kordajate loend vahemikus 1 kuni 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]

Nende kahe võrdlemiseks teeme loendi mõistmise abil sama:

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

Loendist arusaamist saate kasutada ka tingimuslike lausetega. Allolev näidiskood prindib kõik paaritu arvud vahemikku 1 kuni 10:

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

Nüüd kirjutame avatud koodi abil ka ülaltoodud koodi ümber eest silmus:

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

Seotud: Kuidas lisada loendit Pythonis

Loendi mõistmine aktsepteerib ka pesastatud järgmisi lauseid:

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

See võtab ka pesa eest silmus:

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

Teil võib olla ka tavaline pesa eest silmus loendi mõistmisel:

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

Stringidega saate manipuleerida ka Pythoni loendi mõistmisega. Vaatame allpool sõnade mõistmist:

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

Loendi mõistmine võib aktsepteerida ka funktsiooni, mis täidab teatud toimingut. Sisestame kordajafunktsiooni, mis saab loendi mõistmisel paarisarvud, et näha, kuidas see toimib:

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]

Saate ülaltoodud koodi ikkagi ühe funktsioonina kirjutada ilma mõistmist kasutamata. Kuid loendist arusaamine on kasulik, kui peate tegema mitu iteratsiooni ja paigutama igaüks neist eraldi muutujatesse.

Näiteks saate teha mõne muu toimingu n ja sellel on spetsiaalne muutuja. Muudame ülaltoodud arusaamist, et paaritu arvust genereerida paarituid:

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

Sõnastik ja komplektide mõistmine

Lisaks loendi mõistmisele pakub Python ka sõnastikku ja komplekti mõistmisfunktsiooni.

Vaadake allolevat sõnastiku mõistmise näidet, et näha, kuidas see toimib:

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}

Ülaltoodud kood kordab numbrite loendit vahemikus 1 kuni 9 ja teeb neist võtmed. Seejärel käsib Python korrutada iga võtme kahega. Lõpuks esitab see selle toimingu tulemused saadud massiivi iga võtme vastavate väärtustena.

Seotud: Kuidas massiivid ja loendid Pythonis töötavad

Komplekti mõistmine on natuke sarnane loendi mõistmisega. Siin on näide komplekti mõistmisest:

mu arvuti ei tunne ära minu välist kõvaketast
numbers = {i**(2) for i in range(10) if i%4==0}
print(numbers)
Output: {0, 16, 64}

Kuid erinevalt loendi mõistmisest eemaldab komplekti mõistmine duplikaadid:

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}

Saate proovida ülaltoodud koodi, kasutades loetelu mõistmist, et näha, kuidas need erinevad.

Kas saate nimekirja mõistmist iga kord kasutada?

Oleme vaadanud erinevaid näiteid loendi mõistmisest ja sellest, kus saate neid kasutada. Kuid nagu iga teine ​​Pythoni meetod, sõltub loendi mõistmise kasutamine konkreetsest probleemist, mida soovite lahendada. Seetõttu peaksite seda kasutama ainult siis, kui see sobib ideaalselt konkreetse probleemi jaoks, mida soovite lahendada.

Loendi mõistmise üks eesmärke on lihtsustada koodi ja muuta see loetavamaks. Seetõttu vältige selle käsitlemisel keerukust. Näiteks võib Pythoni pikk mõistmine muutuda keeruliseks. See kaotab oma eesmärgi.

Jaga Jaga Piiksuma E -post Kuidas kasutada Pythoni loendi arusaamu (ja millal neid mitte kasutada)

Siin on kõik, mida peate teadma selle Pythoni hämmastava funktsiooni kasutamise kohta, mis suurendab teie tootlikkust ja koodi loetavust üleöö.

Loe edasi
Seotud teemad
  • Programmeerimine
  • Python
Autori kohta Idisou Omisola(Avaldatud 94 artiklit)

Idowu on kirglik kõige nutika tehnoloogia ja tootlikkuse vastu. Vabal ajal mängib ta kodeerimisega ja lülitab malelauale, kui tal on igav, kuid talle meeldib ka aeg -ajalt rutiinist lahti saada. Tema kirg näidata inimestele teed kaasaegses tehnoloogias motiveerib teda rohkem kirjutama.

Veel Idowu Omisolast

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin