Python &引用;如果a=b,那么a=b";不';行不通

Python &引用;如果a=b,那么a=b";不';行不通,python,arrays,python-2.7,if-statement,Python,Arrays,Python 2.7,If Statement,我有一个由Nbin列表组成的表(命名表),每个列表都包含Nbin元素。其中一些元素是(长)数组,所有其他元素都是单个0。 然后我做了一个简短的代码: a=1 b=1 Nbin=3 for a in range(1,Nbin+1): for b in range(1,Nbin+1): if np.all(table[a][b]!=0) and np.all(a = b): s2=11 print a,'-',b,s2

我有一个由Nbin列表组成的表(命名表),每个列表都包含Nbin元素。其中一些元素是(长)数组,所有其他元素都是单个0。 然后我做了一个简短的代码:

a=1
b=1
Nbin=3
for a in range(1,Nbin+1):
    for b in range(1,Nbin+1):
        if np.all(table[a][b]!=0) and np.all(a = b):
            s2=11 
            print a,'-',b,s2
        elif np.all(table[a][b]!=0) and np.all(a != b):
            s2=12 
            print a,'-',b,s2
基本上,我期望的输出(对于Nbin=3)是:

但我得到的是:

1 - 1 11
1 - 2 11
1 - 3 11
2 - 2 11
2 - 3 11
3 - 3 11

我哪里做错了?

正如评论所指出的,问题是第一个条件包含赋值,而不是比较
a=b
a
的值设置为
b
,而您需要的是
a==b
,这表示两个值是否相等
np。只要
b
不是0,所有(a=b)
都将计算为true

此外,对于这个条件,您不需要
np.all
<代码>a==b和
a!=b
就足够了


请注意,我不能保证您的代码现在能按预期工作,因为您没有说明
的值是什么。

您的意思是
=
?您知道
a=b
是一个赋值吗?你知道
np.all(a!=b)
np.all(a==b)
都可以是
False
?你为什么在条件句中使用
np.all
?您一次只测试一个条件,因此不需要
np。非常感谢!正如您可能已经推断出的那样,我对Python编码还不熟悉,问题恰恰是我编写了=而不是==(当然,np.all是无用的)。现在它工作得很好!!
1 - 1 11
1 - 2 11
1 - 3 11
2 - 2 11
2 - 3 11
3 - 3 11