python - 如何使用 python 生成器表达式创建一个 oneliner 多次运行一个函数并获得列表输出

标签 python iterator generator generator-expression

我想知道是否有一种简单的 Pythonic 方式(可能使用生成器)对列表中的每个项目运行一个函数并生成一个返回列表?

例子:

def square_it(x):
    return x*x

x_set = [0,1,2,3,4]
squared_set = square_it(x for x in x_set)

我注意到,当我对此进行逐行调试时,传递到函数中的对象是一个生成器。

因此,我得到一个错误: TypeError: *: 'generator' 和 'generator' 不支持的操作数类型

我知道这个生成器表达式创建了一个要传递给函数的生成器,但我想知道是否有一种很酷的方法可以仅通过指定一个可迭代对象作为参数来多次运行该函数? (无需修改函数以期待可迭代)。

在我看来,这种能力对于减少代码行数非常有用,因为您不需要创建循环来为函数取乐,也不需要创建变量来将输出保存在列表中。

谢谢!

最佳答案

你想要一个列表理解:

squared_set = [square_it(x) for x in x_set]

关于python - 如何使用 python 生成器表达式创建一个 oneliner 多次运行一个函数并获得列表输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18724646/

相关文章:

python - Pandas - 如果列较大且不为空则生成值

c++ - 如何将 `boost::range` 迭代器与标准迭代器一起使用

python - 为什么这会返回生成器列表?

php - 将生成器分成 block 的最佳方法

python - 如何在抓取的 Pandas 数据框中的所有列上使用 `str.replace()` 方法?

python - 端点可以忽略 Flask 中的 'after request' 装饰器吗?

python - numpy中两个 float 之间以对数间隔的数字

python - 为什么在类上定义 __getitem__ 使其在 python 中可迭代?

php - 一种用于递归迭代器的 iterator_to_array 以获得二维数组

iterator - 从压缩迭代生成间隙元组的生成器