मेरे पास निम्नलिखित कोड हैं:
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
कथनों को 4 पंक्तियों में लिखने की आवश्यकता है । यह काफी वाचाल है, थोड़ा बदसूरत है ... हिम्मत मैं कहता हूं, यह काफी अन-पाइथोनिक है ।
क्या कोई अन्य सरल और अधिक कॉम्पैक्ट समाधान है? (और अधिक pythonic )
हां, मुझे पता है कि मैं 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))