我的代码是为列表中的名称分配值。如果我的列表中没有要分配给其中一个名称的条目,我需要知道如何检索或设置默认值。到目前为止我的代码:
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]并使其等于零。
答案 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