Loetlege arusaamad Pythonis

List Comprehensions Python



Loendite mõistmist kasutatakse Pythonis sageli ühe rea lausete kirjutamiseks, mis loovad korduva objektiga loopides uue loendi või sõnastiku. Selles artiklis selgitatakse, kuidas kasutada loendi mõistmist Pythonis, alustades põhiseletusest, kuidas silmused Pythonis töötavad.

Loop Pythonis

Pythoni tsükliavaldus kordab järjestikku mis tahes objekti, loendi, stringi jne liikmeid. Võrreldes teiste programmeerimiskeeltega on selle süntaks palju puhtam ega nõua iteratsioonietappide käsitsi määratlemist ja iteratsiooni alustamist. Kuigi on olemas viise, kuidas muuta selle käitumine samasuguseks kui teised programmeerimiskeeled (seda käesolevas artiklis ei käsitleta). Samuti saate silmuste üle mõningast kontrolli teostada, kasutades selliseid avaldusi nagu jätkata, katkestada, läbida jne. Allpool on lihtne näide Pythoni silmusest:







eestxsisse vahemik(10):
printida(x)

Ülaltoodud silmus prindib kümme numbrit alates 0 -st kuni 9 -ni.



Nimekirja mõistmine

Nimekirjade mõistmine ei ole midagi muud kui lühikirjeldus / lühike viis mitmerealiste tsüklite kirjutamiseks ühe rea lausesse. Allpool toodud näide loendi mõistmisest loob uue loendi kujul [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], lisades sinna kõik x väärtused.



numbrid= [xeestxsisse vahemik(10)]
printida (numbrid)

Pange tähele, et loendi mõistmine loob alati uue loendi ega muuda avaldises kasutatud algseid iterables. Tüüpiline loendi mõistmise avaldis peab sisaldama lauset for ja sellele võib järgneda tingimuslaused. Ilma loendi mõistmist kasutamata kirjutatakse ülaltoodud näide järgmiselt.





numbrid= []
eestxsisse vahemik(10):
numbrid.lisama(x)

printida (numbrid)

Toimivus ja loetavus

Nimekirjade mõistmine on kiirem kui tsüklite puhul. Siiski, kui te ei korda sadu tuhandeid üksusi, ei märka te olulisi jõudluse parandusi. Kuigi loendist arusaamine pakub kokkuvõtlikku viisi tsüklite kirjutamiseks, võivad keerulised avaldised põhjustada koodi halva loetavuse ja suuremat paljusõnalisust. Oluline on hoida kood loetavana, välja arvatud juhul, kui maksimaalne jõudlus on teie programmi jaoks hädavajalik.

Näide: nimekirja mõistmise süntaksi kasutamine sõnaraamatute ja komplektidega

Pythoni sõnastik on võtmeväärtuste paarides määratletud elementide kogum, samas kui komplekt on ainulaadsete väärtuste kogum, kus duplikaadid pole lubatud. Loendist arusaamist saab kasutada ka Pythoni sõnastike ja komplektidega. Süntaks erineb veidi, selle asemel, et avaldis ruudukujulisteks sulgeda, peate nüüd kasutama lokkis trakse. Samuti saate uue loendi asemel uue sõnastiku / komplektiobjekti.



andmed= {'linn':'New York', 'nimi':'john doe'}

vormindatud_andmed= {k: v.tiitel() eestet,vsisseandmed.esemeid()}

printida (vormindatud_andmed)

Ülaltoodud näites teisendatakse stringiväärtused tiitlitäheks ja luuakse uus sõnastik nimega formatted_data, mille väljundiks on: {'city': 'New York', 'name': 'John Doe'}. Sõnastikku / komplekti saab ka kohapeal muuta, määrates olemasoleva sõnastiku muutuja vasakul küljel.

andmed= {'linn':'New York', 'nimi':'john doe'}

andmed= {k: v.tiitel() eestet,vsisseandmed.esemeid()}

printida (andmed)

Ilma sõnastikust arusaamist kasutamata näeks kood välja selline:

andmed= {'linn':'New York', 'nimi':'john doe'}

vormindatud_andmed= {}

eestet,vsisseandmed.esemeid():
vormindatud_andmed[et] =v.tiitel()

printida (vormindatud_andmed)

Kuna komplektides pole võtme-väärtuse paare, saab hulga mõistmist määratleda samamoodi nagu loendi mõistmist. Ainus erinevus on lokkis trakside kasutamine.

Näide: mitu silmuste jaoks loendi mõistmisel

Eespool mainitud loetelu mõistmise näide on põhiline ja kasutab avalduse jaoks ühte. Allpool on näide, mis kasutab silmuste jaoks mitu ja tingimuslikku if -lauset.

omadussõnad= ['Ketas', 'Eoan', 'Fookus', 'Kunstlik']

loomad= ['Dingo', 'Ermine', 'Kaev', 'Kobras']

koodnimed= [x +''+ jaeestxsisseomadussõnadeestjasisseloomadkuija.algusest peale(x[0])]

printida (koodnimed)

Kood näitab väljundina [‘Disco Dingo’, ‘Eoan Ermine’, ‘Focal Fossa’]. Kaks silmuste jaoks lähevad üle omadussõnade ja loomade loendite ning nende liikmed ühendatakse tühiku abil ainult siis, kui mõlema sõna esimene täht on sama. Ilma loendi mõistmist kasutamata näeks kood välja selline:

omadussõnad= ['Ketas', 'Eoan', 'Fookus', 'Kunstlik']
loomad= ['Dingo', 'Ermine', 'Kaev', 'Kobras']

koodnimed= []

eestxsisseomadussõnad:
eestjasisseloomad:
kuija.algusest peale(x[0]):
koodnimed.lisama(x +''+ ja)

printida (koodnimed)

Näide: nimekirja mõistmine klausliga if-else

Allolev näide näitab, kas lausete if ja else kasutamine loendi mõistmisel.

number_loend= [1, 2, 3, 4]
other_list= [5, 6, 7, 8]

tulemus= [Tõsi kui (x + y)%2 == 0 muidu Vale eestxsissenumber_loendeestjasisseother_list]

printida (tulemus)

Kahe loendi sirvimisel kontrollib ülaltoodud loendi mõistmine, kas elementide paari summa on paaris või mitte. Ülaltoodud koodi käitamine näitab väljundina [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True]. Ilma loendi mõistmist kasutamata näeks kood välja selline:

number_loend= [1, 2, 3, 4]
other_list= [5, 6, 7, 8]
tulemus= []

eestxsissenumber_list:
eestjasisseother_list:
kui (x + y)%2 == 0:
tulemus.lisama(Tõsi)
muidu:
tulemus.lisama(Vale)

printida (tulemus)

Järeldus

Loendist arusaamine pakub kena viisi, kuidas kirjutada puhtaid ja sisutihedaid tsüklilauseid. Need võivad aga kiiresti muutuda keerukaks ja raskesti mõistetavaks, kui kasutatakse mitut tsüklit ja tingimuslauseid. Lõppkokkuvõttes on tegemist programmeerija mugavustasemega, kuid üldiselt on hea mõte kirjutada selgesõnaline, loetav ja hõlpsasti silumiseks vajalik kood, selle asemel, et liigselt kasutada kiirkirju.