迭代2D数组

时间:2015-10-31 18:52:24

标签: python arrays loops multidimensional-array

我正在编写一些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'

4 个答案:

答案 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不是列表。如果您希望rc0,则可以执行以下操作:

r, c = 0, 0
# or
r = c = 0

2

要迭代列表列表,我会这样做:

for a, b, c in A:
    ...

abc将是每个列表的三个元素。

答案 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