Python &引用;如果a=b,那么a=b";不';行不通
我有一个由Nbin列表组成的表(命名表),每个列表都包含Nbin元素。其中一些元素是(长)数组,所有其他元素都是单个0。 然后我做了一个简短的代码: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
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