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

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

নেস্টেড লিস্ট (লিস্টের মধ্যে লিস্ট) কে একক লিস্টে রূপান্তর করা (flattening) একটি সাধারণ কাজ। নিচে পাঁচটি পদ্ধতির পারফরম্যান্স এবং ব্যবহারিক দিক দিয়ে তুলনা করা হলো।

উদাহরণ

ini_list = [[1, 2, 3], [3, 6, 7], [7, 5, 4]]
# প্রত্যাশিত আউটপুট: [1, 2, 3, 3, 6, 7, 7, 5, 4]

১. itertools.chain.from_iterable (দ্রুত এবং মেমরি-দক্ষ)

from itertools import chain
flatten_list = list(chain.from_iterable(ini_list))
print(flatten_list)

২. লিস্ট কাম্প্রিহেনশন (সর্বাধিক পাইথনিক এবং পঠনযোগ্য)

flatten_list = [j for sub in ini_list for j in sub]
print(flatten_list)

৩. functools.reduce ব্যবহার করে

from functools import reduce
flatten_list = reduce(lambda z, y: z + y, ini_list)
print(flatten_list)

৪. sum() ফাংশন ব্যবহার করে (সरल কিন্তু ধীর)

flatten_list = sum(ini_list, [])
print(flatten_list)

৫. রিকারসিভ ল্যাম্বডা (গভীর নেস্টেড লিস্টের জন্য)

flatten_list = lambda y: [x for a in y for x in flatten_list(a)] if type(y) is list else [y]
print(flatten_list(ini_list))

পারফরম্যান্স তুলনা (বড় লিস্টের জন্য)

পদ্ধতিসময় জটিলতামেমরিপঠনযোগ্যতাসুপারিশ
chain.from_iterableO(N)কম (ইটারেটর)মাঝারিবড় ডেটা, পারফরম্যান্স-ক্রিটিক্যাল
লিস্ট কাম্প্রিহেনশনO(N)মাঝারিউচ্চসাধারণ ব্যবহারের জন্য সেরা
reduceO(N²)*উচ্চকমএড়িয়ে চলুন
sum()O(N²)*উচ্চউচ্চছোট লিস্টের জন্য মাত্র

* প্রতিটি সংযোজনে নতুন লিস্ট তৈরি হয়, তাই বড় লিস্টের জন্য খুব ধীর।

সেরা অনুশীলন

  • সাধারণ কেসে: [item for sublist in lst for item in sublist]
  • বড় ডেটা/স্ট্রিমিং: itertools.chain.from_iterable
  • গভীর নেস্টিং (irregular depth): রিকারসিভ ফাংশন বা more_itertools.collapse
  1. পাইথনে ডিকোড ওয়েজ

  2. পাইথনে লিস্ট এক্সটেন্ড করা (৫টি ভিন্ন উপায়)

  3. পাইথনে লিস্ট ক্লিয়ার করার বিভিন্ন উপায়

  4. পাইথনে শ্যালো লিস্ট ফ্ল্যাটেন কীভাবে করবেন?