সমস্যা বিবরণ
একটি লিস্ট থেকে অ্যাল্টারনেট এলিমেন্ট (বিষম ইনডেক্সের এলিমেন্ট বা ১, ৩, ৫... পজিশন) বের করতে হবে।
উদাহরণ
Input: [1, 2, 3, 4, 5]
Output: [2, 4] (ইনডেক্স ১ এবং ৩)
পদ্ধতি ১: লিস্ট কম্প্রিহেনশন + মডুলো
numbers = [1, 2, 3, 4, 5]
result = [numbers[i] for i in range(len(numbers)) if i % 2 != 0]
print(result) # [2, 4]
পদ্ধতি ২: স্লাইসিং (সবচেয়ে পাইথনিক)
numbers = [1, 2, 3, 4, 5]
result = numbers[1::2] # ইনডেক্স ১ থেকে শুরু করে ২ स्टেপে
print(result) # [2, 4]
স্লাইসিং সিনট্যাক্স ব্যাখ্যা
list[start:stop:step]
numbers[1::2] # start=1, stop=end, step=2
ভেরিয়েশন
numbers[::2]— সম ইনডেক্স (০, ২, ৪...):[1, 3, 5]numbers[1::2]— বিষম ইনডেক্স (১, ৩, ৫...):[2, 4]numbers[::-1]— রিভার্স:[5, 4, 3, 2, 1]
পারফরম্যান্স
- স্লাইসিং: C-লেভেলে ইমপ্লিমেন্টেড, সবচেয়ে দ্রুত
- লিস্ট কম্প্রিহেনশন: পাইথন লেভেলে, কিছুটা স্লো
- দভেনই O(n) সময়, কিন্তু স্লাইসিং কনস্ট্যান্ট ফ্যাক্টর কম
উপসংহার
পাইথনে অ্যাল্টারনেট এলিমেন্ট বের করার জন্য স্লাইসিং [1::2] সেরা পদ্ধতি। ছোট, দ্রুত এবং পাইথনিক।