কম্পিউটার

পাইথন তালিকা বোধগম্যতা?


পাইথন একটি তালিকা থেকে আরেকটি তালিকা বের করার জন্য কমপ্যাক্ট সিনট্যাক্স প্রদান করে। এই অভিব্যক্তিগুলিকে বলা হয় তালিকা বোধগম্যতা। তালিকা বোধগম্যগুলি পাইথনের সবচেয়ে শক্তিশালী টুলগুলির মধ্যে একটি। পাইথনের তালিকা বোঝা হল কার্যকরী প্রোগ্রামিং ধারণার জন্য ভাষার সমর্থনের একটি উদাহরণ।

পাইথন তালিকা বোধগম্য হল আইটেমগুলির তালিকায় একটি ফাংশন বা ফিল্টার প্রয়োগ করার একটি খুব সহজ উপায়। সঠিকভাবে ব্যবহার করা হলে তালিকার বোধগম্যতা খুবই উপযোগী হতে পারে কিন্তু আপনি যদি সতর্ক না হন তবে খুব অপঠিত।

সিনট্যাক্স

তালিকা বোঝার সাধারণ সিনট্যাক্স হল −

[expr for element in iterable if condition]

উপরে −

এর সমতুল্য
for element in iterable:
   if condition:
      expr

উদাহরণস্বরূপ, বলুন আপনি একটি তালিকার প্রতিটি সংখ্যার বর্গ গণনা করতে চান। আপনি আপনার গণনার জন্য অভিব্যক্তি এবং লুপ ওভার করার জন্য ইনপুট ক্রম প্রদান করে এটি করতে পারেন।

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> squares = [x**2 for x in lst]
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

লিস্ট কম্প্রিহেনশন বনাম লুপের জন্য

#USING FOR LOOP
evens = []
for i in range(10):
   if i % 2 == 0:
      evens. append(i)
print(evens)

আউটপুট

[0, 2, 4, 6, 8]

উপরের কোডটি লেখার একটি ভাল এবং দ্রুত উপায় হল তালিকা বোঝার মাধ্যমে৷

>>> [i for i in range(10) if i % 2 ==0]
[0, 2, 4, 6, 8]

আমরা দেখতে পাচ্ছি, তালিকা বোঝার ব্যবহার করে কোড লেখা অনেক বেশি কার্যকর, এটি ছোট এবং কম উপাদান জড়িত৷

লিস্ট কম্প্রিহেনশন বনাম ল্যাম্বডা ফাংশন

আপনি একটি একক-আর্গুমেন্ট ফাংশন প্রয়োগ না করা পর্যন্ত, তালিকার বোধগম্যগুলি সাধারণ ক্ষেত্রের জন্য বিল্ট-ইন ফাংশনের চেয়ে স্পষ্ট। গণনার জন্য মানচিত্রের একটি ল্যাম্বডা ফাংশন তৈরি করা প্রয়োজন, যা দৃশ্যত কোলাহলপূর্ণ।

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(map(lambda x: x**2, lst))
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

মানচিত্রের বিপরীতে, তালিকার বোধগম্যতা আপনাকে ইনপুট তালিকা থেকে আইটেমগুলিকে সহজেই ফিল্টার করতে দেয়, ফলাফল থেকে সংশ্লিষ্ট আউটপুটগুলি সরিয়ে দেয়৷

কন্ডিশনাল এক্সপ্রেশন সহ বোঝার তালিকা করুন

উদাহরণস্বরূপ, বলুন আপনি শুধুমাত্র 100 এর কম সংখ্যা গণনা করতে চান, যেগুলি 2 এবং 5 উভয় দ্বারা বিভাজ্য৷

>>> lst = [x for x in range(100) if x % 2 == 0 if x % 5 == 0]
>>> print(lst)
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

আরেকটি উদাহরণ নিন, যেখানে আপনি শুধুমাত্র 2 দ্বারা বিভাজ্য সংখ্যার বর্গ গণনা করতে চান। এখানে, আমি লুপের পরে তালিকা বোঝার জন্য একটি শর্তসাপেক্ষ অভিব্যক্তি যোগ করে এটি করি -

>>> lst=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> even_squares = [x**2 for x in lst if x % 2 == 0]
>>> print(even_squares)
[4, 16, 36, 64, 100]

1 থেকে 100 এর মধ্যে জোড় সংখ্যা গণনা করুন।

>>> # a list of even numbers between 1 and 100
evens = [i for i in range(1,100) if not i % 2]
>>> print(evens)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]

একটি বিশাল সংখ্যক আইটেম লুপ করার সময় তালিকার বোধগম্যতাগুলি লুপের তুলনায় অনেক দ্রুত হয়৷ যদি একা পঠনযোগ্যতা যতটা সম্ভব তাদের ব্যবহার করার জন্য একটি বিশ্বাসযোগ্য কারণ না হয়, গতি হওয়া উচিত।


  1. পাইথন ডিকশনারি কম্প্রিহেনশন

  2. পাইথনে নেস্টেড তালিকা বোঝা

  3. পাইথনে বোধগম্যতা

  4. পাইথন লিস্ট কম্প্রিহেনশন এবং স্লাইসিং?