我试图理解别人写的代码,发现了这一点
w &= (n == 2)
w |= (n == 3)
其中w和n都是numpy数组。 我已经在Google上进行了一些快速研究,但没有发现能告诉我的是什么,我真的很感激。
答案 0 :(得分:0)
// Doesn't evaluate to propery access.
// But isn't a non-configurable property, so return true
console.log(delete null); // true
console.log(delete 12); // true
console.log(delete "foobar"); // true
// non-configurable own property.
// only case when delete returns false
// (or throws in strict mode)
let obj = {};
Object.defineProperty(obj, "val", {value: 12});
console.log(delete obj.val); // false
和w
必须是相同长度的数组。然后按组件执行操作,因此将n
的第一个元素与w
的第一个元素,n
的第二个元素与w
的第二个元素进行比较,然后等等。
n
将返回n == 2
或True
,当与bitwise and/or operators一起使用时,它们分别解释为False
和1
。 。这意味着0
的结果将始终为w & (n == 2)
或1
。
所有操作均按组件执行。因此,0
会将索引w &= (n == 2)
的值更改为w
的值,其中索引处1
的二进制值的最后一位是w
(在(如果是整数,则表示整数为奇数)。 ,并且1
中相同索引处的值为n
。对于所有其他情况,它将值更改为2
。示例:
0
以相同的方式,w | =(n == 3)与按位或; w: [1, 2, 3, 4]
w (binary): [1, 10, 11, 100]
n: [0, 2, 2, 3]
n == 2: [False, True, True, False] (interpreted as [0, 1, 1, 0])
w & (n == 2): [0, 0, 1, 0]
中的二进制表示形式以1 或结尾,或者w
中同一索引处的值为n
。在所有其他情况下,3
:
0