我想知道是否有一种简单的 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/