মূল কন্টেন্টে যান
মডিউল 6 · 1-এর পাঠ 4কোর্সে 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']`, প্রতিটি শব্দের দৈর্ঘ্যের সাথে `দৈর্ঘ্য` তৈরি করুন এবং শুধুমাত্র ৫টি অক্ষরের চেয়ে ছোট শব্দ দিয়ে `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 প্রচেষ্টার পরে উপলব্ধ