gpt4 book ai didi

python - 一个python对象中的双迭代器

转载 作者:行者123 更新时间:2023-11-28 19:52:03 24 4
gpt4 key购买 nike

在 python 中,我试图编写一个支持两种不同类型的迭代器的类。粗略地说,这个对象包含一个数据矩阵,我想有两种不同的迭代器来支持行迭代和列迭代。

最佳答案

dict 有几个生成迭代器的方法——iterkeysitervaluesiteritems——所以应该你的类。如果有一种“最自然”的迭代方式,为了方便和可读性,您还应该将它别名为 __iter__(可能是 iterrows;当然总会有有一些疑问,就像我们设计它的迭代行为时 dict 一样,但合理的选择总比没有好。

例如,假设您的矩阵是正方形,被展平成行主列表 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

关于python - 一个python对象中的双迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1025348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com