如果数组的某个索引中没有元素,是否可以回退到空值
foo_val = int(data_arr[3])
IndexError:列表索引超出范围
答案 0 :(得分:1)
使用try
和except
。
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
答案 1 :(得分:0)
替代尝试除了:
它的一行而不是4行,并且仍然可读:
foo_val = int(data_arr[3]) if len(data_arr) >= 4 else 0
请注意len
不是零索引,因此> = 4而不是> = 3
答案 2 :(得分:0)
您可以使用defaultdict
模块中的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
您也可以只使用dict
执行此操作,方法是使用get
方法提供默认值,但defaultdict
稍微方便一点。