python“;或;当其中一个变量可能不存在时?

python“;或;当其中一个变量可能不存在时?,python,list,if-statement,Python,List,If Statement,假设如下: 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

假设如下:

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):

这使用了
的行为,以确保如果列表包含12项或更少项,则不会对
mylist[12]
进行评估。

或者如果您认为它更具可读性,例如:

if mylist[0] == 1:
    # do something
elif len(mylist) > 12 and mylist[12] == 2:
    # do same thing

切片总是返回一个值(即使它是一个空列表)。你可以做:

if myList[0] == 1 or myList[12:13] == [2]:

数字
12
有什么特别之处,以至于你想按数字检查这个特定索引,但没有特别到足以确保列表提前足够长?…但我更喜欢@Mark的答案,因为你没有两次编写相同的代码。它应该有效,但不如Mark的答案清晰。塔迪克:是的,我认为马克的答案也更好。我想我会把我的2分钱投进去。
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