假设我有以下两个列表:
x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
y = [None,None,None,None,None,10,20,30,40,50,60,70,80,90,100]
我需要减去每个列表的相应元素 (x[i] - y[i] ),我想从 x 的第 6 个元素中减去 6,以便 y 中的相应元素不为空(无)。
以下代码是我尝试过但出现错误的代码:
result = []
for i in x[5:]:
result.append(x[i] - y[i])
索引错误:列表索引超出范围
最佳答案
你应该这样做:
for val1, val2 in zip(x[5:], y[5:]):
result.append(val1 - val2)
或者
for val1, val2 in list(zip(x, y))[5:]:
result.append(val1 - val2)
您也可以跳过
None
值,如下所示:for val1, val2 in zip(x, y):
if val2 is not None: # can also check if val1 is not None if needed
result.append(val1 - val2)
您获得
IndexError
的原因是循环中的 i
被分配了 x
列表的值(不是 indeces!),并且您正在尝试使用这些值对列表进行索引。例如,当该元素的索引仅为 i = 15
时,在循环 14
的最后一次运行时。关于python - 如何在Python中的两个长列表中减去特定切片的对应元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54864037/