আমার কাছে নিম্নলিখিত কোড রয়েছে:
new_index = index + offset
if new_index < 0:
new_index = 0
if new_index >= len(mylist):
new_index = len(mylist) - 1
return mylist[new_index]
মূলত, আমি একটি নতুন সূচক গণনা করি এবং তালিকা থেকে কিছু উপাদান খুঁজতে এটি ব্যবহার করি। সূচকটি তালিকার সীমানার মধ্যে রয়েছে কিনা তা নিশ্চিত করার জন্য, আমাকে 2 if
লাইনে বিভক্ত 2 টি স্টেটমেন্ট লিখতে হবে । এটি বেশ ভার্জোজ, কিছুটা কুরুচিপূর্ণ ... আমি সাহস করে বলি, এটি বেশ অ-পাইথোনিক ।
অন্য কোন সহজ এবং আরও কমপ্যাক্ট সমাধান আছে? (এবং আরও অজগর )
হ্যাঁ, আমি জানি আমি if else
এক লাইনে ব্যবহার করতে পারি তবে এটি পঠনযোগ্য নয়:
new_index = 0 if new_index < 0 else len(mylist) - 1 if new_index >= len(mylist) else new_index
আমি জানি আমি চেইন করতে পারি max()
এবং min()
একসাথে করতে পারি । এটি আরও কমপ্যাক্ট, তবে আমি অনুভব করি যে এটি অস্পষ্ট, আমি ভুল টাইপ করলে বাগগুলি খুঁজে পাওয়া আরও বেশি কঠিন। অন্য কথায়, আমি এটি খুব সোজা না।
new_index = max(0, min(new_index, len(mylist)-1))