如何检查Python中的数组/列表中是否存在条目?

时间:2012-11-16 16:37:57

标签: python arrays list

我的代码是为列表中的名称分配值。如果我的列表中没有要分配给其中一个名称的条目,我需要知道如何检索或设置默认值。到目前为止我的代码:

array =[[a],[b],[c],[d]]
no1 = array[0]
no2 =array[1]
no3 =array[2]
no4 =array[3]
# if array[4] exists:
    no5 = array[4]
else
    no5 = 0

我试过了 -

try:
    array[4]
except ValueError:
    no5 = 0

但是它出现了数组[4]超出范围。

只是为了澄清,因为我的代码编写并不引人注目,基本上我为一个程序提供了三个不同的输入,这些输入应该读取这些输入,然后将输出写入文件。 问题是所有输入都有不同的数组长度。所以我想要做的是以某种方式让程序检查是否存在(例如)数组[4]的条目,如果该条目不存在,则创建条目数组[4]并使其等于零。

5 个答案:

答案 0 :(得分:1)

你去了try和/ except是好的。如果你有一个IndexError,那么你真的很接近,你刚刚在except中发现了错误的错误类型。这将是有效的:

try:
    no5 = array[4]
except IndexError:
    no5 = 0

答案 1 :(得分:1)

您应该抓住IndexError(由array[4]引发的实际错误),而不是ValueError

答案 2 :(得分:0)

而不是try你也可以检查数组的长度

def: elem_exists(arr, idx):
   return 0 <= ldx < len(arr)

答案 3 :(得分:0)

您正在尝试捕获错误的异常类型

try:
    no5 = array[4]
except IndexError:
    no5 = 0

一个漂亮的单行解决方案是使用itertools

import itertools
(no1,no2,no3,no4,no5),_ = zip(*itertools.izip_longest(array[:5],range(5),fillvalue=0))

答案 4 :(得分:0)

为什么不能达到如下内容?

if len(array) > 4:
    no5 = array[4]
else:
    no5 = 0