如果元素具有超出范围的列表索引,则返回默认值

时间:2018-10-19 07:10:47

标签: python python-3.x list error-handling

Python 3 中,如果您具有越界索引元素,将如何返回一些默认值?这与此处的其他线程类似,但是我的情况很特殊。我想生成一个在每个元素上具有此属性的列表元素的列表。

我这样尝试过(这是我的代码的概括):

list2 = [list1[0][0] or None,
         list1[0][1] or None,
         list1[1][0] or None,
         list1[1][1] or None]

[注意:我的索引不一定具有上述模式]

我并不是真的希望它能奏效,也没有。我得到一个IndexError: List index out of range

我认为try / except可能会起作用,但这仅在整个list2提示IndexError时才捕获,而不是list1的每个单独元素时才捕获。

我的上一次尝试是同时做这两项,并创建一个函数来尝试使用try / except来分别对list1进行调用:

def checker(element):
    try:
        return element
    except IndexError:
        return None

list2 = [checker(list1[0][0]),
         checker(list1[0][1]),
         checker(list1[1][0]),
         checker(list1[1][1])]

但是,我仍然收到IndexError。

是否有实现此目的的好方法?我在概念上缺少什么吗?

0 个答案:

没有答案