最佳答案
我有以下密码:
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行。这是相当冗长,有点丑... 我敢说,这是相当 非蟒蛇。
还有其他更简单、更紧凑的解决方案吗? (和更多的 蟒蛇)
是的,我知道我可以在一行中使用 if else
,但它是不可读的:
new_index = 0 if new_index < 0 else len(mylist) - 1 if new_index >= len(mylist) else new_index
我也知道我可以把 max()
和 min()
连在一起。它更紧凑,但我觉得它有点模糊,如果我输错了,就更难找到 bug。换句话说,我不觉得这很简单。
new_index = max(0, min(new_index, len(mylist)-1))