কম্পিউটার টিউটোরিয়াল

পাইথন - টাপলের লিস্টের লিস্টকে ইটারেট করার পদ্ধতিগুলো

লিস্ট পাইথনের সবচেয়ে গুরুত্বপূর্ণ কন্টেইনার, যা প্রায় প্রতিটি প্রোগ্রামে ব্যবহৃত হয়। টাপলের লিস্টের লিস্ট (list of lists of tuples) কে সমতল (flatten) করে একক লিস্টে রূপান্তর করার কয়েকটি দক্ষ পদ্ধতি নিচে দেওয়া হলো।

উদাহরণ

১. itertools.zip_longest ব্যবহার করে

from itertools import zip_longest

test_list = [
    [('11'), ('12'), ('13')],
    [('21'), ('22'), ('23')],
    [('31'), ('32'), ('33')]
]
print("প্রাথমিক লিস্ট:", test_list)

# কলাম-ভিত্তিক যোজায়োগ (transpose) এবং ফ্ল্যাটেন
res_list = [item for my_list in zip_longest(*test_list) for item in my_list if item]
print("ফলাফল:", res_list)
# আউটপুট: ['11', '21', '31', '12', '22', '32', '13', '23', '33']

২. zip_longest + chain + filter ব্যবহার করে

from itertools import zip_longest, chain

test_list = [
    [('11'), ('12'), ('13')],
    [('21'), ('22'), ('23')],
    [('31'), ('32'), ('33')]
]
print("প্রাথমিক লিস্ট:", test_list)

res_list = list(filter(lambda x: x, chain(*zip_longest(*test_list))))
print("ফলাফল:", res_list)

৩. লিস্ট কাম্প্রিহেনশন (সর্বाधিক পাইথনিক এবং দ্রুত)

test_list = [
    [('11'), ('12'), ('13')],
    [('21'), ('22'), ('23')],
    [('31'), ('32'), ('33')]
]
print("প্রাথমিক লিস্ট:", test_list)

# নেস্টেড লিস্ট কাম্প্রিহেনশন
res_list = [item for sublist in test_list for item in sublist]
print("ফলাফল:", res_list)
# আউটপুট: ['11', '12', '13', '21', '22', '23', '31', '32', '33']

কোনটি বেছে নেবেন?

  • লিস্ট কাম্প্রিহেনশন: সবচেয়ে পঠনযোগ্য, দ্রুত এবং কোনো এক্সট্রা ইমপোর্ট লাগে না। সাধারণ ফ্ল্যাটেনিংয়ের জন্য সেরা।
  • zip_longest: সমান দৈর্ঘ্যের নেস্টেড লিস্ট নয় বা কলাম-ভিত্তিক প্রসেসিং দরকার হলে ব্যবহার করুন।
  • itertools.chain: বড় ডেটাসেটের জন্য মেমরি-দক্ষ (iterator-based)।
  1. পাইথনে লিস্ট (List) এর ওপর ইটারেট করা

  2. পাইথনে লিস্ট vs টাপল vs ডিকশনারি পার্থক্য

  3. পাইথনে লিস্ট কীভাবে ডিফাইন করবেন?

  4. পাইথন লিস্ট মাস্টার করুন: তৈরি, অ্যাক্সেস এবং ম্যানিপুলেশন