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

পাইথনে heapq.merge() ব্যবহার করে দুটি সর্টেড লিস্ট মার্জ করা


heapq মডিউল

পাইথনের স্ট্যান্ডার্ড লাইব্রেরি heapq হিপ (heap) ডেটা স্ট্রাকচার ইমপ্লিমেন্ট করে। এতে সর্টেড ইটারেবল মার্জ করার merge() ফাংশন রয়েছে।

সিনট্যাক্স


heapq.merge(*iterables, key=None, reverse=False)
  • একাধিক সর্টেড ইনপুট নেয়, সর্টেড আউটপুট জেনারেটর হিসেবে রিটার্ন করে।
  • মেমরি দক্ষ (লেজি ইভ্যালুয়েশন)।
  • key ফাংশন দিয়ে কাস্টম সর্টিং, reverse=True দিয়ে ডিসেন্ডিং।

উদাহরণ কোড


import heapq

first_list = [45, 12, 63, 95, 74, 21, 20, 15, 36]
second_list = [42, 13, 69, 54, 15]

# প্রথমে সর্ট করুন (merge-এর প্রিকন্ডিশন)
first_list.sort()
second_list.sort()

print('First sorted list:', first_list)
# [12, 15, 20, 21, 36, 45, 63, 74, 95]
print('Second sorted list:', second_list)
# [13, 15, 42, 54, 69]

# মার্জ
merged = list(heapq.merge(first_list, second_list))
print('Merged list:', merged)
# [12, 13, 15, 15, 20, 21, 36, 42, 45, 54, 63, 69, 74, 95]

heapq-এর অন্যান্য 주요 ফাংশন

ম্যানুয়াল মার্জ (শিক্ষার্থীদের জন্য)


def merge_sorted(a, b):
    i = j = 0
    result = []
    while i < len(a) and j < len(b):
        if a[i] <= b[j]:
            result.append(a[i])
            i += 1
        else:
            result.append(b[j])
            j += 1
    result.extend(a[i:])
    result.extend(b[j:])
    return result

কখন heapq.merge() ব্যবহার করবেন?

  • বড় সর্টেড ফাইল/স্ট্রিম মার্জ করতে (মেমরি লিমিটেড) — লেজি ইভ্যালুয়েশন।
  • একাধিক সর্টেড সোর্স থেকে ইউনিফাইড স্ট্রিম তৈরি করতে।
  • এক্সternal সর্ট (external merge sort)-এর 머জ ফেজে।

সাবধানতা

ইনপুটগুলো অবশ্যই প্রি-সর্টেড হতে হবে। অনসর্টেড ইনপুট দিলে আউটপুট সর্টেড হবে না।

  1. পাইথনে মার্জ সর্ট (Merge Sort) ব্যাখ্যা

  2. পাইথনে GET মেথড ব্যবহার করে তথ্য পাস করা

  3. পাইথনে দুটি ডিকশনারি মার্জ (Merge) করার পদ্ধতি

  4. পাইথনে দুটি ম্যাট্রিক্স যোগ করা

কপিরাইট © https://bd.wsxdn.com সমস্ত অধিকার সংরক্ষিত
ফাংশনকাজ
heapify(iterable)লিস্টকে ইন-প্লেস হিপে রূপান্তর (O(n))
heappush(heap, item)আইটেম যোগ করে হিপ প্রোপার্টি মেইনটেইন
heappop(heap)স몰েস্ট আইটেম রিমুভ করে রিটার্ন
heappushpop(heap, item)পুশ+পপ একসাথে (দ্রুততর)
heapreplace(heap, item)পপ+পুশ (রুট রিমুভ করে পুশ)
nlargest(n, iterable)nটি লার্জেস্ট এলিমেন্ট
nsmallest(n, iterable)nটি স্মলেস্ট এলিমেন্ট