用另一个列表的第一个值减去一个列表中的第二个值
subract 2nd value in one list with the first value of another list
我有两个列表 A 和 B,我需要列表 B 中的第二个值与列表 A 中的第一个值相减的总和。这个过程需要迭代发生,直到我到达列表 A 的末尾并且两个列表的长度相同。
我已经尝试根据范围遍历每个列表,并在减法操作之后,将迭代器增加一,如下所示。
A = [700.0,05500.0,9470740.0,9467000.0,47077140.0,091600.0,480.0,940700.0,86640.0,947100.0,9201160.0,478800.0,472640.0,800.0]
B = [1300.0,15040.0,27040.0,947074260.0,7160.0,920.0,40.0,3220.0,9700.0,195460.0,2380.0,55400.0,20.0,279880.0]
new_list = []
for i in range(0,13):
for j in range(0,13):
new_list.append(listA[i+1] - listB[j])
i += 1
j += 1
new_list
但是我得到错误:
----> new_list.append(listA[i+1] - listB[j])
IndexError: list index out of range
如果我尝试使用较小的范围,它会起作用,但我需要它遍历两个列表中的每个值。我需要它执行 listA(i) - listB(j+1) 直到结束。
我做了一些修改,希望它现在有效:
listA = [700.0,05500.0,9470740.0,9467000.0,47077140.0,091600.0,480.0,940700.0,86640.0,947100.0,9201160.0,478800.0,472640.0,800.0]
listB = [1300.0,15040.0,27040.0,947074260.0,7160.0,920.0,40.0,3220.0,9700.0,195460.0,2380.0,55400.0,20.0,279880.0]
new_list = []
for i in range(0,len(listA)):
for j in range(0,len(listB) - 1):
new_list.append(listA[i] - listB[j + 1])
print(new_list)
IIUC,你想要:
pd.Series(A).shift(-1)-pd.Series(B)
输出:
0 4200.0
1 9455700.0
2 9439960.0
3 -899997120.0
4 84440.0
5 -440.0
6 940660.0
7 83420.0
8 937400.0
9 9005700.0
10 476420.0
11 417240.0
12 780.0
13 NaN
dtype: float64
如列表:
new_list = pd.Series(A).shift(-1).sub(pd.Series(B))[:-1].to_list()
输出:
[4200.0, 9455700.0, 9439960.0, -899997120.0, 84440.0, -440.0, 940660.0, 83420.0, 937400.0, 9005700.0, 476420.0, 417240.0, 780.0]
使用 zip:
sum((i-j for i,j in zip(a, b[2:])))
a,b 是你的列表
我有两个列表 A 和 B,我需要列表 B 中的第二个值与列表 A 中的第一个值相减的总和。这个过程需要迭代发生,直到我到达列表 A 的末尾并且两个列表的长度相同。
我已经尝试根据范围遍历每个列表,并在减法操作之后,将迭代器增加一,如下所示。
A = [700.0,05500.0,9470740.0,9467000.0,47077140.0,091600.0,480.0,940700.0,86640.0,947100.0,9201160.0,478800.0,472640.0,800.0]
B = [1300.0,15040.0,27040.0,947074260.0,7160.0,920.0,40.0,3220.0,9700.0,195460.0,2380.0,55400.0,20.0,279880.0]
new_list = []
for i in range(0,13):
for j in range(0,13):
new_list.append(listA[i+1] - listB[j])
i += 1
j += 1
new_list
但是我得到错误:
----> new_list.append(listA[i+1] - listB[j])
IndexError: list index out of range
如果我尝试使用较小的范围,它会起作用,但我需要它遍历两个列表中的每个值。我需要它执行 listA(i) - listB(j+1) 直到结束。
我做了一些修改,希望它现在有效:
listA = [700.0,05500.0,9470740.0,9467000.0,47077140.0,091600.0,480.0,940700.0,86640.0,947100.0,9201160.0,478800.0,472640.0,800.0]
listB = [1300.0,15040.0,27040.0,947074260.0,7160.0,920.0,40.0,3220.0,9700.0,195460.0,2380.0,55400.0,20.0,279880.0]
new_list = []
for i in range(0,len(listA)):
for j in range(0,len(listB) - 1):
new_list.append(listA[i] - listB[j + 1])
print(new_list)
IIUC,你想要:
pd.Series(A).shift(-1)-pd.Series(B)
输出:
0 4200.0
1 9455700.0
2 9439960.0
3 -899997120.0
4 84440.0
5 -440.0
6 940660.0
7 83420.0
8 937400.0
9 9005700.0
10 476420.0
11 417240.0
12 780.0
13 NaN
dtype: float64
如列表:
new_list = pd.Series(A).shift(-1).sub(pd.Series(B))[:-1].to_list()
输出:
[4200.0, 9455700.0, 9439960.0, -899997120.0, 84440.0, -440.0, 940660.0, 83420.0, 937400.0, 9005700.0, 476420.0, 417240.0, 780.0]
使用 zip:
sum((i-j for i,j in zip(a, b[2:])))
a,b 是你的列表