迭代器克隆[英] iterator clone

问题描述

克隆"独立"的方法是什么?迭代器?我不能使用 tee(),
因为我不知道有多少"独立"的人我需要的迭代器.复制和
深度复制不起作用...

--pavel

推荐答案

Yosifov Pavel 写道:
克隆"独立"的方法是什么?迭代器?我不能使用 tee(),
因为我不知道有多少"独立"的人我需要的迭代器.复制和
深度复制不起作用...
没有通用的方法.对于"短"您可以将项目存储在序列中
list 这也是 tee() 的最坏情况的行为.

你想做什么?

彼得


13 éàì 14:12,Peter Otten <__pete...@web.dewrote:
约西福夫·帕维尔写道:
克隆"独立"的方法是什么?迭代器?我不能使用 tee(),
因为我不知道有多少"独立"的人我需要的迭代器.复制和
深度复制不起作用...

没有通用的方法.对于"短"您可以将项目存储在序列中
list 这也是 tee() 的最坏情况的行为.

你想做什么?

彼得
我尝试生成迭代器(迭代器的迭代器).彼得,你是
对!谢谢你.例如,可以使用类似
这个:

定义克隆器(它):
"""return(可克隆,克隆)"""
返回 tee(it)

及用法:

可克隆,seq1 = cloneiter(seq)

...迭代 seq1 ...
然后再次克隆:

可克隆,seq2 = cloneiter(可克隆)

...迭代 seq2 ...

或者上课:

类 ReIter:
def __init__(self, it):
self._it = 它
def __iter__( 自我 ):
self._it,ret = tee(self._it)
返回 ret

及用法:

ri = ReIter(seq)
...迭代 ri...
...再次遍历 ri...
……再一次……

但我认为(我确定!)这是 Python 迭代器的缺陷!他们是
不太好……

--Pavel

Yosifov Pavel 写道:
在 13 D???D?,14:12,Peter Otten <__pete...@web.dewrote:
>约西福夫·帕维尔写道:
克隆"独立"的方法是什么?迭代器?我不能使用 tee(),
因为我不知道有多少"独立"的人我需要的迭代器.复制和
深度复制不起作用...

没有通用的方法.对于"短"序列,您可以将项目存储在
一个列表中,这也是 tee() 的最坏情况.

您要做什么?

彼得

我尝试生成迭代器(迭代器的迭代器).彼得,你是
对!谢谢你.例如,可以使用类似
这个:

定义克隆器(它):
"""return(可克隆,克隆)"""
返回发球台(它)
[截图]

太抽象了,不好意思.你想解决什么具体问题
与您的克隆迭代器?可能有一种方法可以重新安排您的设置
一种不需要它们的方式.
但我认为(我确定!)这是 Python 迭代器的缺陷!他们是
不太好...
嗯,我觉得 Python 的迭代器,尤其是生成器,很漂亮.
更重要的是,我认为没有通用的方法来制作迭代器
可复制,与编程语言无关.问题是大多数
有用的取决于外部状态.

彼得

本文地址:https://www.itbaoku.cn/post/1050705.html