在一个项目中,我创建了一个类,我需要在这个新类和一个真实矩阵之间进行操作,所以我重载了这个__rmul__函数
class foo(object):
aarg = 0
def __init__(self):
self.aarg = 1
def __rmul__(self,A):
print(A)
return 0
def __mul__(self,A):
print(A)
return 0
Run Code Online (Sandbox Code Playgroud)
但是当我打电话给它时,结果并不是我的预期
A = [[i*j for i in np.arange(2) ] for j in np.arange(3)]
A = np.array(A)
R = foo()
C = A * R
Run Code Online (Sandbox Code Playgroud)
输出:
0
0
0
1
0
2
Run Code Online (Sandbox Code Playgroud)
似乎该函数被调用了6次,每个元素一次.
相反,该__mul__功能非常有效
C = R * A
Run Code Online (Sandbox Code Playgroud)
输出:
[[0 0]
[0 1]
[0 2]]
Run Code Online (Sandbox Code Playgroud)
如果A不是数组,而只是列表列表,则两者都可以正常工作
A = [[i*j for i in np.arange(2) …Run Code Online (Sandbox Code Playgroud) 给定一个int变量,我想检查其二进制表示中的"1"数是偶数还是奇数.它可以用xor操作来制作
int n;
int s = 0;
for(;n;n>>=1)
s ^= (n&1);
Run Code Online (Sandbox Code Playgroud)
在C++中有一些更好的方法吗?
注意:我不是要求'1的数量,而是为了它的奇偶性,所以我认为可能有比我更好的代码.