假设是这样的:
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
当您获得太多相同的代码行时。
假设是这样的:
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
当您获得太多相同的代码行时。
您可以检查列表的长度:
if mylist[0] == 1 or (len(mylist) > 12 and mylist[12] == 2):
这使用了 的短路行为and
来确保mylist[12]
如果列表包含 12 个或更少的项目,则不会对其进行评估。
切片总是返回一个值(即使它是一个空列表)。你可以这样做:
if myList[0] == 1 or myList[12:13] == [2]:
或者,如果您认为它更具可读性,如下所示:
if mylist[0] == 1:
# do something
elif len(mylist) > 12 and mylist[12] == 2:
# do same thing
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