我正在编写一些python代码来迭代二维数组A,如果数组中存在负数则打印'negval',否则打印'positive'。此代码生成编译器错误“'int'对象不可迭代”。有人可以解释这个错误以及如何解决它吗?
A = [[0,1,1], [1,0,1], [1,1,0]]
r,c = 0
for r in range(3):
for c in range(3):
if A[r][c] < 0:
print 'negval'
print 'positive'
答案 0 :(得分:2)
1
问题来自这一行,你应该有这个追溯:
>>> r, c = 0
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-40-506be499ea74> in <module>()
----> 1 r, c = 0
TypeError: 'int' object is not iterable
您尝试执行列表解包,但0
不是列表。如果您希望r
和c
为0
,则可以执行以下操作:
r, c = 0, 0
# or
r = c = 0
2
要迭代列表列表,我会这样做:
for a, b, c in A:
...
a
,b
,c
将是每个列表的三个元素。
答案 1 :(得分:1)
r,c = 0
这一行不起作用,那是因为你试图解包一个不可迭代的值。相反,
r=c=0
然而,使用range
并且使用硬编码数字也不是一个好主意。而是使用any
:
print "negval" if any(element<0 for innerList in A for element in innerList) else "positive"
如果您对any
不满意,请执行以下操作:
negative=False
for innerList in A:
for element in innerList:
if element<0:
negative=True
print 'negval' if negative else "positive"
答案 2 :(得分:0)
var $itembtn = $('<figure data-groups=\'["'+ group +'"]\'>
<button class="loadmorebtn" id="'+ group +'">Load more items '+ group +'
</button></figure>');
$grid.append($itembtn);
$itembtn.on('click', 'button', function(){
console.log(this.id);
});
或
Remove the definition of r,c = 0 which is not needed causing the issue.
或
r, c = 0,0
请定义一个更好看的功能/方法
同样,您可以使用xrange函数,它将为整数生成生成器。
r = c = 0
答案 3 :(得分:0)
您有r, c = 0
行。这不起作用,因为0不是可迭代类型。您必须分别将r和c分配给0:
r = 0
c = 0