ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 6 · 4లో పాఠం 1కోర్సులో 21/36~12 min
మాడ్యూల్ పాఠాలు (1/4)

జాబితా గ్రహణశక్తి

జాబితా కాంప్రహెన్షన్ అనేది దరఖాస్తు చేయడం ద్వారా జాబితాను రూపొందించే వ్యక్తీకరణ మళ్ళించదగినదిగా పరివర్తన (మరియు ఐచ్ఛికంగా ఫిల్టర్). ఇది ఒకే పంక్తిలో for + append అని వ్రాయడానికి పైథోనిక్ మార్గం.

Python
# stile imperativo (verboso)
quadrati = []
for n in range(5):
    quadrati.append(n * n)

# stile pythonico
quadrati = [n * n for n in range(5)]
# [0, 1, 4, 9, 16]

పూర్తి వాక్యనిర్మాణం

Python
[espressione for elemento in iterabile if condizione]
  • ** వ్యక్తీకరణ**: ఫలిత జాబితాలో ఏమి ఉంచాలి
  • ఇటరబుల్‌లోని మూలకం కోసం: సోర్స్ లూప్
  • షరతు అయితే (ఐచ్ఛికం): సరిపోలే మూలకాలను మాత్రమే ఉంచుతుంది
Python
pari = [n for n in range(10) if n % 2 == 0]
# [0, 2, 4, 6, 8]

maiuscole = [p.upper() for p in ["ciao", "mondo"]]
# ['CIAO', 'MONDO']

lunghe = [p for p in ["a", "bb", "ccc", "dddd"] if len(p) >= 3]
# ['ccc', 'dddd']

వ్యక్తీకరణ లోపల ఉంటే/లేకపోతే (తృతీయ)

పరివర్తన షరతులతో (ఫిల్టర్ కాకుండా), టెర్నరీని ఉపయోగించండి for ముందు వ్యక్తీకరణ:

Python
[n if n > 0 else 0 for n in [-2, -1, 0, 1, 2]]
# [0, 0, 0, 1, 2]

బహుళ కోసం: కార్టేసియన్ ఉత్పత్తి

మీరు బహుళ for నిబంధనలను నెస్ట్ చేయవచ్చు:

Python
coppie = [(x, y) for x in range(3) for y in range(2)]
# [(0,0), (0,1), (1,0), (1,1), (2,0), (2,1)]

for క్లాజుల క్రమం "బయటి-ముందు-లోపలి", అవి ఉన్నట్లుగా గూడు ఉచ్చులు.

గ్రహణశక్తిని ఉపయోగించనప్పుడు

  • అనేక సమూహ if/else శాఖలతో కూడిన సంక్లిష్ట తర్కం → స్పష్టమైన లూప్‌ని ఉపయోగించండి.
  • సైడ్ ఎఫెక్ట్స్ (ప్రింట్, ఫైల్ రైట్స్) → లూప్, కాంప్రహెన్షన్ కాదు.
  • 2 కంటే ఎక్కువ సమూహ స్థాయిలు → స్పష్టమైన పేరున్న లూప్ దాదాపు ఎల్లప్పుడూ ఉత్తమంగా ఉంటుంది.

సమూహ జాబితా గ్రహణాలు

మీరు ఒకే జాబితా కాంప్రహెన్షన్‌లో బహుళ for లూప్‌లను చైన్ చేయవచ్చు. ఉదాహరణకు, ఒక మాతృకను (జాబితాల జాబితా) ఒకే ఫ్లాట్ జాబితాలోకి చదును చేయడానికి, మీరు వ్రాయవచ్చు:

Python
matrix = [[1, 2], [3, 4]]
flat = [item for row in matrix for item in row]
# result: [1, 2, 3, 4]

లూప్‌ల క్రమం ఖచ్చితంగా సాంప్రదాయ for లూప్‌ల గూడు క్రమాన్ని ప్రతిబింబిస్తుంది.

దీనిని ప్రయత్నించండి

వ్యాయామం#python.m6.l1.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ఇవ్వబడిన `సంఖ్యలు = [1, 2, 3, 4, 5, 6]`, కేవలం సరి సంఖ్యల వర్గాలతో `సరి_చతురస్రాలు` బిల్డ్ చేయండి. `సరి_చతురస్రాలు` మూల్యాంకనం చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

ముగింపులో n % 2 == 0 అయితే.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం సమీక్షించండి

వ్యాయామం#python.m6.l1.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ఇచ్చిన `పదాలు = ['Ciao', 'Mondo', 'Python', 'Java']`, ప్రతి పదం యొక్క పొడవుతో `పొడవులు` మరియు 5 అక్షరాల కంటే తక్కువ పదాలతో `చిన్న_పదాలు` నిర్మించండి. `(పొడవు, చిన్న_పదాలు)` మూల్యాంకనం చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

రెండు వేర్వేరు గ్రహణాలు.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

అదనపు సవాలు

వ్యాయామం#python.m6.l1.e3
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

Use a list comprehension to calculate the squares of only the even integers between 1 and 10 inclusive. Store the list in `even_squares` and evaluate it.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

ఫిల్టర్ చేయడానికి x % 2 == 0 మరియు వ్యక్తీకరణగా x**2 అయితే పునరావృతం చేయడానికి పరిధి(1, 11) ఉపయోగించండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది