我有列表J1
和Ci
。对于J1
中的每个零元素,我希望Ci
中对应的元素为零。对于J1
中的每个非零元素,Ci
中对应的元素应该相同。但是我得到了一个错误。我给出了预期的输出。
J1 = [[0, 0, 0, 0, 0, 9, 0]]
Ci=[0.0,
8.317333882002454e-05,
0.0,
8.305496451875518e-05,
8.24723410599921e-05,
8.257692992192182e-05,
8.2641447034131e-05]
J1=[i for i in J1[0] if i!=0]
Ci=Ci[J1]
print(Ci)
错误是
in <module>
Ci=Ci[J1]
TypeError: list indices must be integers or slices, not list
预期输出为
[0.0, 0.0, 0.0, 0.0, 0.0, 8.257692992192182e-05, 0.0]
2条答案
按热度按时间hivapdat1#
你可以用
zip()
来理解它:输出:
或者,使用
numpy
:lrpiutwd2#
您得到的错误是因为您试图将一个列表用作另一个列表的索引。这是不可能的,因为列表索引必须是整数或切片。
您可以改为循环以迭代J1的元素,并使用每个非零元素的索引来访问Ci中的相应元素。如果J1中的元素为零,则将Ci中的相应元素设置为零。