我想知道是否有一种简单的 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: unsupported operand type(s) for *: 'generator' and 'generator'
我知道这个生成器表达式创建了一个要传递给函数的生成器,但我想知道是否有一种很酷的方法可以仅通过指定一个可迭代作为参数来完成多次运行该函数?(无需修改函数以期望可迭代)。
在我看来,这种能力对于减少代码行非常有用,因为您不需要创建一个循环来为函数提供乐趣,也不需要创建一个变量来将输出保存在列表中。
谢谢!