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

时间:2012-05-19 20:03:18

标签: 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

当你得到太多相同的代码行时。

4 个答案:

答案 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