我有以下两个二进制列表的代码,我想获得一个结果列表,其中的元素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] 删除。
我来说两句