对两个二进制列表进行OR元素明智的操作

杰昌格

我有以下两个二进制列表的代码,我想获得一个结果列表,其中的元素i将是OR应用于i这两个列表元素操作

from operator import ior  

l_0 = [01100]
l_1 = [11000]

print map(ior, l_0, l_1)

我期待的是的结果[11100],但结果是:

[11000]

我已经检查了ior运算符,并且文档说它执行了该操作:

a = ior(a, b) is equivalent to a |= b

所以我也尝试了以下检查:

print ior(0,0)
print ior(1,0)
print ior(0,1)
print ior(1,1)

获得结果:

0
1
1
1

这是有道理的,但与列表第3位获得的结果不一致。我不明白为什么上面的map操作的结果不是[11100]我在这里遗漏了一些东西,希望您能对此有所了解。

紫罗兰色

[11000](例如)不是五个二进制数字的列表,而是一个十进制数字的列表11000

同样,01100一个八进制数字等于576十进制,因此:

11000d        = 0010101011111000b
01100o = 576d = 0000001001000000b
                -----------------
  perform or:   0010101011111000b = 11000d

这就是为什么您得到11000答案的原因,就像您已经做过的一样:

[l_0[i] | l_1[i] for i in range(len(l_0))]

如果要处理包含五个二进制数字的列表,则将类似于:

>>> l_0 = [0,1,1,0,0]
>>> l_1 = [1,1,0,0,0]
>>> [l_0[i] | l_1[i] for i in range(len(l_0))]
[1, 1, 1, 0, 0]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在两个 Ndarray 之间执行广播二进制操作的 Pythonic 方式

Javascript:添加两个二进制数(返回二进制数)

如何对两个混合特征进行二进制编码?

异化两个二进制字符串列表

交叉制表 R 中的两个二进制列列表

两个二进制数的乘法

两个二进制表示的交叉

AND两个二进制字符串

比较两个二进制向量

给定一个列表,我如何只对每个两个元素都满足二进制谓词的子列表执行一些转换?

将两个二进制列合并为一个,保持二进制选项

将二进制列表转换为字符列表(两个特殊字符)的最佳方法

二进制运算符“ +”不能应用于两个CGFloat操作数吗?

二进制运算符'| ='不能应用于两个'UIAccessibilityTraits'操作数

二进制运算符'+'不能应用于两个String操作数

二进制运算符'&='不能应用于Swift中的两个'Bool'操作数

二进制运算符'=='不能应用于两个struct操作数

二进制运算符'〜='不能应用于两个'Optional <Error>'操作数

二进制运算符'=='不能应用于if语句中的两个操作数

二进制运算符'<'不能应用于两个T操作数

二进制运算符“ &&”不能应用于两个布尔操作数

二进制运算符'=='不能应用于两个操作数

二进制运算符'/'不能应用于两个'Double'操作数

二进制运算符'|' 不能应用于两个UIViewAutoresizing操作数

二进制运算符'〜='不能应用于两个UmRet操作数

二进制运算符'+'不能应用于两个'T'操作数

Swift二进制运算符'+'不能应用于两个CGFloat操作数

二进制运算符+不能应用于两个int操作数

二进制运算符'/'不能应用于两个'T'操作数