如何迭代 Python 中的二维矩阵?

How to iterate over a 2D matrix in Python?

我在思考如何设置迭代代码时遇到了麻烦,我构建了一个矩阵作为列表的列表

for _ in range(rowsLen):
    self.matrixRC.append([2 for _ in range(collsLen)])

我现在的迭代代码以错误的方式迭代。

def __iter__(self): 
    for i in self.matrixRC:
        for j in i:
            yield j


def __next__(self): 
    for i in self.matrixRC:
        for j in i:
            return j

通过以错误的方式迭代我的意思是它首先显示 matrixRC[0][0] 然后 matrixRC[0][1] 等的值,但我希望它显示 matrixRC[0][0] 然后 matrixRC[1][0]

或者如果它已经显示 matrixRC[0][0] 然后 matrixRC[1][0] 那么我希望它显示 matrixRC[0][0] 然后 matrixRC[0][1]。我真的很难想象这个迭代代码是如何工作的(我复制的代码的少数部分之一)。

def __iter__(self): 
       for i in zip(*self.matrixRC):
            for j in i:
                yield j

    def __next__(self): 
        for i in zip(*self.matrixRC):
            for j in i:
                return j

这应该有效:

def __iter__(self): 
       yield from chain.from_iterable(zip(*(self.matrixRC or [])))

def __next__(self):
    return next(iter(self))