我有两个列表sigma, Cb_max1
。我想把0.021
插入到sigma
中,对应于Cb_max1
中的每个非零元素。我给出了当前输出和预期输出。
sigma = [[0, 0, 0, 0, 0, 0.005, 0]]
Cb_max1 = [[0.0009847628716281426, 0.0009847628716281426, 0, 0, 0, 0.0009800221856714917, 0]]
sigma = [i if j != 0 else 0.021 for i, j in zip(Cb_max1, sigma[0])]
print(sigma)
当前输出为
[0.021]
预期输出为
[[0.021, 0.021, 0, 0, 0, 0.005, 0]]
2条答案
按热度按时间yebdmbv41#
试试这个:
6tqwzwtp2#
你正在迭代一个长度为1的列表,因为
zip
会在较短的迭代器停止时立即停止,你可能需要迭代内部列表:如果你想让
sigma
成为一个嵌套列表,你需要添加一对额外的括号:此外,您正在检查
sigma
的值,并且您说要检查Cb_max
的值:你用相反的方式写出了条件:
这符合您提供的描述。您提供的输出似乎与此不符。可能您需要满足其他条件:你想保留
sigma[0]
中的非零值:最后,这将给予你预期的输出。
如果你喜欢用更简单的方式来写: