مرکزی مواد پر جائیں
ماڈیول 6 · سبق 1 از 4کورس میں 21/36~12 min
ماڈیول اسباق (1/4)

فہرست کی سمجھ

A فہرست فہم ایک ایسا اظہار ہے جو لاگو کرکے ایک فہرست بناتا ہے۔ ایک تبدیلی (اور اختیاری طور پر ایک فلٹر) ایک تکراری میں۔ یہ ہے ایک لائن پر 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 شقوں کی ترتیب "بیرونی-پہلے-اندر" ہے، گویا وہ گھوںسلا loops.

جب فہم کا استعمال نہیں کرنا ہے۔

  • بہت سی نیسٹڈ 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]` دیے ہوئے، صرف یکساں نمبروں کے مربعوں کے ساتھ `جفت_مربع` بنائیں۔ `even_squares` کا اندازہ لگائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

اگر n % 2 == 0 آخر میں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش کا جائزہ لیں۔

ورزش#python.m6.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

الفاظ = ['Ciao', 'Mondo', 'Python', 'Java']` دیے ہوئے، ہر لفظ کی لمبائی کے ساتھ `لمبائی` بنائیں، اور صرف 5 حروف سے چھوٹے الفاظ کے ساتھ `short_words` بنائیں۔ اندازہ کریں `(لمبائی، مختصر_الفاظ)`۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

دو الگ الگ فہم۔

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.

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

اعادہ کرنے کے لیے رینج (1، 11) استعمال کریں، اگر x % 2 == 0 فلٹر کرنے کے لیے، اور x**2 کو اظہار کے طور پر استعمال کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔