python 列表的按位或减少

2024-01-02

我有两个 0 和 1 列表。两个列表的长度相同。以下只是一个示例,我正在寻找适用于任何大小且在任何索引处包含零和一的列表的通用解决方案。

l1 = [1,1,0,1,1,1,1]
l2 = [0,0,0,1,0,0,0]

目标是使用第一个列表l1 as mask创建一个新列表l2_new from l2从逻辑上讲OR合并 indizes 的所有元素,其中l1 is 1并采用不变的元素,其中l1 is 0.

这将导致:

l2_new = [0,0,1]

图解说明:


这是一个完美的设置np.bitwise_or.reduceat基于切片的OR-ing -

# Based on https://stackoverflow.com/a/62430810/ @Divakar
def squash1s_mask(a):
    a = np.asarray(a)
    m = a==1
    return np.r_[True,m[:-1]!=m[1:]] | (a==0)

out = np.bitwise_or.reduceat(l2, np.flatnonzero(squash1s_mask(l1)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 列表的按位或减少 的相关文章

随机推荐