python - 如何克隆 Python 生成器对象?

标签 python object clone generator

考虑这种情况:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os

walk = os.walk('/home')

for root, dirs, files in walk:
    for pathname in dirs+files:
        print os.path.join(root, pathname)

for root, dirs, files in walk:
    for pathname in dirs+files:
        print os.path.join(root, pathname)

我知道这个例子有点多余,但你应该考虑到我们需要多次使用相同的 walk 数据。我有一个基准场景,并且必须使用相同的 walk 数据才能获得有用的结果。

我已经尝试 walk2 = walk 来克隆并在第二次迭代中使用,但没有成功。问题是......我怎样才能复制它?有可能吗?

提前谢谢你。

最佳答案

您可以使用 itertools.tee() :

walk, walk2 = itertools.tee(walk)

请注意,正如文档指出的那样,这可能“需要大量额外的存储空间”。

关于python - 如何克隆 Python 生成器对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4945155/

相关文章:

python - If 语句未捕获文件中的空行

javascript - "Uncaught TypeError: Cannot call method ' getAttribute ' of undefined"来自 getElementsByTagName 对象的引用属性

python - 混合 Tornado 和sqlalchemy

python - SQLAlchemy 从 create() 打印原始 SQL

C++ 指针赋值(指向 vector )

javascript - 如何克隆ImageData?

java - clone() : ArrayList. clone() 我以为做了浅拷贝

javascript - 有没有一种方法可以在 jQuery 中克隆数组?

Python 3 : String validation (password)

java - 我们可以从 xml 文件创建一个类吗?