সমস্যা বিবরণ
একটি লিস্টে নির্দিষ্ট এলিমেন্টটি শেষ কোন ইনডেক্সে আছে তা বের করতে হবে।
উদাহরণ
words = ['eat', 'sleep', 'drink', 'sleep', 'drink', 'sleep', 'go', 'come']
element = 'sleep'
Output: 5 (0-based index)
পদ্ধতি ১: লিস্ট রিভার্স করে
words = ['eat', 'sleep', 'drink', 'sleep', 'drink', 'sleep', 'go', 'come']
element = 'sleep'
words.reverse()
index = words.index(element)
last_index = len(words) - index - 1
print(last_index) # 5
পদ্ধতি ২: enumerate + max (পাইথনিক)
words = ['eat', 'sleep', 'drink', 'sleep', 'drink', 'sleep', 'go', 'come']
element = 'sleep'
last_index = max(index for index, item in enumerate(words) if item == element)
print(last_index) # 5
পদ্ধতি ৩: rindex লাইক ফাংশন (রিভার্স ইটারেশন)
def last_index(lst, value):
for i in range(len(lst) - 1, -1, -1):
if lst[i] == value:
return i
return -1 # না পাওয়া গেলে
print(last_index(words, 'sleep')) # 5
তুলনা
| পদ্ধতি | সময় জটিলতা | স্থান জটিলতা | মূল লিস্ট পরিবর্তন |
|---|---|---|---|
| Reverse + index | O(n) | O(1) | হ্যাঁ (রিভার্স হয়) |
| enumerate + max | O(n) | O(1) | না |
| Reverse iteration | O(n) | O(1) | না |
উপসংহার
enumerate + maxসবচেয়ে পাইথনিক এবং মূল লিস্ট অপরিবর্তিত রাখে- বারবার ব্যবহার হলে হেল্পার ফাংশন বানান
- না পাওয়া গেলে
ValueErrorহ্যান্ডল করুন (max() খালি জেনারেটরে ValueError দেয়)