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

পাইথনে লিস্ট এলিমেন্টের রিলেটিভ অর্ডার বের করা (Finding relative order)


সমস্যা বিবরণ

একটি ইন্টিজার লিস্ট দেওয়া থাকে। সর্টেড অর্ডারে তাদের পজিশন (র‍্যাঙ্ক) বের করুন।

উদাহরণ

listA = [78, 14, 0, 11] → আউটপুট: [3, 2, 0, 1]

সর্টেড: [0, 11, 14, 78] → ০-র ইনডেক্স ০, ১১-র ১, ১৪-র ২, ৭৮-র ৩।

পদ্ধতি ১: sorted() + index()

listA = [78, 14, 0, 11]
res = [sorted(listA).index(i) for i in listA]
print(res)  # [3, 2, 0, 1]

সاده কিন্তু O(n²) — ডুপ্লিকেট থাকলে ভুল দেবে (index() প্রথম পজিশন দেবে)।

পদ্ধতি ২: enumerate() + sorted() + dict + map()

listA = [78, 14, 0, 11]
temp = {val: idx for idx, val in enumerate(sorted(listA))}
res = list(map(temp.get, listA))
print(res)  # [3, 2, 0, 1]

O(n log n), ডুপ্লিকেট হ্যান্ডল করতে enumerate(sorted(set(listA))) ব্যবহার করুন।

আউটপুট

[3, 2, 0, 1]
  1. পাইথনে লিস্ট অফ টাপলে ফ্রিকোয়েন্সি বের করুন

  2. পাইথনে রেঞ্জের মধ্যে এলিমেন্ট ডিলিট করুন

  3. পাইথনে লিস্টের আকার বের করা

  4. পাইথনে এলিমেন্টের দৈর্ঘ্য অনুযায়ী লিস্ট সর্ট করা