在python中,我试图编写一个支持两种不同类型迭代器的类.粗略地说,这个对象包含一个数据矩阵,我希望有两种不同类型的迭代器来支持行迭代和列迭代.
dict有几个迭代器的生产方法- ,,iterkeys -所以如果你的类.如果有一种"最自然"的迭代方式,你也应该为了方便和可读性而对其进行别名(这可能会是这样;当然总会有一些疑问,就像我们设计迭代行为时一样,但合理的选择总比没有好.itervaluesiteritems__iter__iterrowsdict
例如,假设您的矩阵是方形的,保持扁平化为行主列表self.data,其中一侧为self.n.然后:
def iterrows(self):
start = 0
n = self.n
data = self.data
while start < n*n:
stop = start + n
yield data[start:stop]
start = stop
def itercols(self):
start = 0
n = self.n
data = self.data
while start < n:
yield data[start::n]
start += 1
__iter__ = iterrows
Run Code Online (Sandbox Code Playgroud)