python - 从生成器函数中检索所有迭代器值

标签 python iterator generator

假设我有一个产生两个值的生成器函数:

def gen_func():
    for i in range(5):
        yield i, i**2

我想检索我的函数的所有迭代器值。目前我为此目的使用此代码片段:

x1, x2 = [], []
for a, b in gen_func():
    x1.append(a)
    x2.append(b)

这对我有用,但看起来有点笨拙。有没有更紧凑的编码方式?我在想类似的事情:

x1, x2 = map(list, zip(*(a, b for a, b in gen_func())))

然而,这只是给我一个语法错误。

PS:我知道我可能不应该为此目的使用生成器,但我在其他地方需要它。

编辑x1x2 的任何类型都可以,但是,我更喜欢列表。

最佳答案

如果x1x2 可以是元组,就足够了

>>> x1, x2 = zip(*gen_func())
>>> x1
(0, 1, 2, 3, 4)
>>> x2
(0, 1, 4, 9, 16)

否则,您可以使用 maplist 应用于迭代器:

x1, x2 = map(list, zip(*gen_func()))

只是为了好玩,可以使用扩展的可迭代解包来完成同样的事情:

>>> (*x1,), (*x2,) = zip(*gen_func())
>>> x1
[0, 1, 2, 3, 4]
>>> x2
[0, 1, 4, 9, 16]

关于python - 从生成器函数中检索所有迭代器值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45304162/

相关文章:

python - Django : loading fixtures with natural foreignkey fails with 'ValueError: invalid literal for int() with base 10'

python - Geopy:检索英文国名

iterator - 在向量中存储 Peekable 迭代器时无法推断出适当的生命周期

python - Inverse glob - 从文件名反向工程通配符字符串

python - 通过pip安装时,如何告诉matplotlib如何找到tkinter?

php - 有效搜索 php 迭代器

java - Java从HashSet中获取特定的类对象

Java:通过给出数字 N 生成 true 和 false 的组合;

python - python 的单词搜索生成器问题

c++ - 用 C++ 实现异步惰性生成器