Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回生成器或迭代器生成的所有元素的标准方法_Python_Python 2.7_Python 3.x - Fatal编程技术网

Python 返回生成器或迭代器生成的所有元素的标准方法

Python 返回生成器或迭代器生成的所有元素的标准方法,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我正在寻找一种整洁的、理想的、基于标准库的方法或配方,用于将迭代器或生成器对象转换为一个包含所有元素的列表,如果您在该对象上进行迭代,您将获得这些元素。如果有关于Python2.7或3.x的不同解决方案,我也很想知道。基本上,我正在寻找功能上等同于: def expand(obj): result = [] for o in obj: result.append(o) return result 我知道Python中的生成器和迭代器有很多好处,这可能不应

我正在寻找一种整洁的、理想的、基于标准库的方法或配方,用于将迭代器或生成器对象转换为一个包含所有元素的列表,如果您在该对象上进行迭代,您将获得这些元素。如果有关于Python2.7或3.x的不同解决方案,我也很想知道。基本上,我正在寻找功能上等同于:

def expand(obj):
    result = []
    for o in obj:
        result.append(o)
    return result
我知道Python中的生成器和迭代器有很多好处,这可能不应该用在
.py
文件中。然而,我确实认为这有它的用途,特别是在交互编程和使用小型数据集进行测试时

到目前为止,我最好的答案是列表理解:

In [55]: a=[1,2,3]
In [56]: r=reversed(a)
In [57]: r
Out[57]: <listreverseiterator at 0x101f51a10>

In [58]: [x for x in r]
Out[58]: [3, 2, 1]

In [59]: def f(x):
   ....:     while x > 0:
   ....:         x-=1
   ....:         yield x
   ....:         

In [60]: [x for x in f(4)]
Out[60]: [3, 2, 1, 0]
[55]中的
a=[1,2,3]
在[56]中:r=反向(a)
[57]:r
出[57]:
在[58]中:[x代表r中的x]
Out[58]:[3,2,1]
在[59]中:定义f(x):
..:当x>0时:
..:x-=1
..:收益率x
....:         
在[60]中:[x代表f(4)中的x]
Out[60]:[3,2,1,0]

我尝试搜索Google和StackOverflow,但没有发现任何明显的东西,我检查了和文档——我基于这些的大多数尝试只会产生更多的对象。我也快速查看了一下,但没有注意到任何明显的问题。

有一个非常简单的解决方案:

有一个非常简单的解决方案: