我正在寻找增加这些类型列表的最漂亮和最短的方法:
a = [True, False, True, False, False]
b = [100, 200]
b 的长度等于 a 中 True 元素的数量
我需要的答案是[100, 0, 200, 0, 0]
here
有什么简单的方法可以得到这个答案吗?
它看起来像逐元素乘法,但事实是第二个列表的大小更小,因此如果没有错误代码,常见的 numpy 方法将无法工作。
希望,你会找到好的解决方案
最佳答案
您可以在 numpy
中执行此操作:
c = np.array(a).astype(int)
c[c==1] = b
>>> c
array([100, 0, 200, 0, 0])
注意 如果您需要结果作为列表(基于您想要的输出),而不是 numpy
数组,请使用 c.tolist()
关于python - 逐元素 bool 乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51757511/