可以被多次迭代的可迭代对象的Python名称

6

我正在尝试改进我的文档。我想说这个函数接受的是一个collections.Iterable的东西,但代码将多次迭代这个可迭代对象。"列表"太具体了,而"可迭代对象"不适用,因为有些可迭代对象只能被迭代一次。

这种东西有一个名字吗?“可重复迭代”?“多次迭代”?


2
不是回答你的问题,但我建议你在代码中使用itertools.tee - 这样它就可以接受任何可迭代对象。 - jsbueno
@jsbueno:当传递一个序列时,这会引入一个冗余的副本。 - Sven Marnach
1
@SvenMarnach:实际上,“tee”做的正是“正确的事情”——它只会有一些被使用了一次但还没有全部使用的序列值的“多个副本”。这个问题需要非常关键的资源才能成为一个问题。如果确实存在这样的问题,那么只需要在传入序列时加上一个if语句来判断是否使用tee即可。 - jsbueno
@jsbueno:当传递一个序列给tee时,为什么它不会自动执行正确的操作? - Neil G
2个回答

5
你可能想要的术语是“序列”。在 Python 中,序列是具有长度并支持按索引访问项的东西。请参考:“sequence”

1
这可能太具体了 - 例如,链表不支持按索引访问,但仍然可以迭代。 - Sideshow Bob
1
@SideshowBob:我认为这在实践中并不太限制。Python自带的唯一链表实现是分块链表deque,它也是一个序列。当然,通过索引访问deque的时间复杂度是O(n)。 - Sven Marnach
2
@SvenMarnach:ValuesView是“可重复的”,但通常不支持按索引访问。 - Neil G

2

我想不到任何合适的词语。"Reiterable"听起来是一个不错的术语,为什么不在你的文档中清晰地定义它,然后使用它呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接