0

如果数组的某个索引中没有元素,有没有办法回退到空值

foo_val = int(data_arr[3])

IndexError:列表索引超出范围

4

3 回答 3

1

使用tryexcept

try: # Try doing this piece of code
    foo_val = int(data_arr[3])
except IndexError: # If there is an IndexError, do this piece of code.
    foo_val = 0
于 2013-01-24T11:45:30.437 回答
0

替代尝试,除了:

它是一行而不是 4 行,并且仍然可读:

foo_val = int(data_arr[3]) if len(data_arr) >= 4 else 0

请注意,len它不是零索引,因此 >=4 而不是 >=3

于 2013-01-24T11:46:06.017 回答
0

您可以使用模块defaultdict中的a collections

dd = collections.defaultdict(int) # default to zero, change as needed
for n, x in enumerate(data_arr):
    dd[n] = x
dd[len(data_arr) + 10] # IndexError for data_arr, returns 0 with defaultdict

您也可以只使用 a 来执行此操作,方法dict是使用get提供默认值的方法,但 adefaultdict更方便一些。

于 2013-01-24T12:19:44.703 回答