我有一个表格
的索引数组 b1c_loc= [
(1843, 1854, 63),
(32144, 32155, 56),
(32516, 32556, 71),
(32589, 32600, 60),
(34081, 34092, 66),
(35600, 35611, 67),
]
前两列是与我想要求和的列表对应的索引。最后一栏是用于簿记的,因为它对应于真实世界的应用程序。
现在我还有一个名为Ehisto的列表。我想对每个索引范围求和,如b1c_loc的行中所示,如b1c_loc [0] [0]到b1c_loc [0] [1],对于Ehisto的每一行都要向下求和,并将相应的求和加到每个行,某种形式:
[索引1,索引2,标签,Ehisto中index1和index2之间的和]
或者,使用占位符编号
[
(1843, 1854, 63, 1),
(32144, 32155, 56, 2),
(32516, 32556, 71, 3),
(32589, 32600, 60, 4),
(34081, 34092, 66, 5),
(35600, 35611, 67, 6),
]
这是我尝试这样做的:
for s in b1c_loc:
np.append(sum([Ehisto[s[0]]:Ehisto[s[1]]]))
我想使用存储在b1c_loc中的索引来总结一小部分Ehisto。这不起作用。相反,我得到一个错误
In [37]: for s in b1c_loc:
....: np.append(sum([Ehisto[s[0]]:Ehisto[s[1]]]))
....:
File "<ipython-input-37-b0e7c475a95d>", line 2
np.append(sum([Ehisto[s[0]]:Ehisto[s[1]]]))
^
SyntaxError: invalid syntax
我是否完全以错误的方式做这件事?这似乎很简单,我不觉得我做了什么疯狂但这个错误出现了。无论如何,对不起,如果这个问题没有措辞得那么好。我对python非常陌生,我还在学习。在此先感谢您的任何帮助
答案 0 :(得分:3)
如果要访问每个元组的第一个和第二个元素,只需解压缩:
b1c_loc= [
(1843, 1854, 63),
(32144, 32155, 56),
(32516, 32556, 71),
(32589, 32600, 60),
(34081, 34092, 66),
(35600, 35611, 67),
]
print([b - a for a, b, _ in b1c_loc])
[11, 11, 40, 11, 11, 11]
for a, b, _ in b1c_loc
使用_
为第三个元素解包每个元组的三个子元素,因为我们不打算使用它。然后,我们只需从a
中减去b
。
因此,如果您想通过索引使用这些值来访问Ehisto列表中的元素,我们可以使用相同的逻辑再次使用列表推导:
res = [sum((Ehisto[a], Ehisto[b])) for a, b, _ in b1c_loc]
当您使用逗号,
时,您的代码会因使用冒号分隔值而失败。
np.append(sum([Ehisto[s[0]], Ehisto[s[1]]]))
在旁注中,对变量名ehisto
等使用小写。