假设这样的事情:
if mylist[0] == 1 or mylist[12] == 2:
# do something
但我不确定mylist[12]
是否永远不会超出范围。如何保持简单并仍然检查索引是否存在?不想做
if mylist[0] == 1:
# do something
elif mylist[12] == 2:
# do the EXACT same thing
当你得到太多相同的代码行时。
答案 0 :(得分:10)
您可以查看列表的长度:
if mylist[0] == 1 or (len(mylist) > 12 and mylist[12] == 2):
这会使用and
的{{3}}行为来确保如果列表中包含12个项目,则不会评估mylist[12]
。
答案 1 :(得分:4)
切片总是返回一个值(即使它是一个空列表)。你可以这样做:
if myList[0] == 1 or myList[12:13] == [2]:
答案 2 :(得分:1)
或者如果你认为它更具可读性,那么:
if mylist[0] == 1:
# do something
elif len(mylist) > 12 and mylist[12] == 2:
# do same thing
答案 3 :(得分:0)
def get(arr, ind, default=None):
try:
return arr[ind]
except IndexError:
return default
if get(myList, 0)==1 or get(myList, 12)==2:
# do something