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-এর অন্যান্য 주요 ফাংশন
| ফাংশন | কাজ |
|---|---|
heapify(iterable) | লিস্টকে ইন-প্লেস হিপে রূপান্তর (O(n)) |
heappush(heap, item) | আইটেম যোগ করে হিপ প্রোপার্টি মেইনটেইন |
heappop(heap) | স몰েস্ট আইটেম রিমুভ করে রিটার্ন |
heappushpop(heap, item) | পুশ+পপ একসাথে (দ্রুততর) |
heapreplace(heap, item) | পপ+পুশ (রুট রিমুভ করে পুশ) |
nlargest(n, iterable) | nটি লার্জেস্ট এলিমেন্ট |
nsmallest(n, iterable) | nটি স্মলেস্ট এলিমেন্ট |