使用python返回平方的整数列表

Ale*_*sch 5 python list

我正在寻找一个函数,它接受列表中的整数,如[1,2,3],并返回一个带有平方整数的新列表; [1,4,9]

我该怎么做?

PS - 就在我准备提交之前我注意到O'Reilly的'Learning Python'第14章似乎提供了我正在寻找的解释(第358页,第4版)

但我仍然很想知道其他解决方案是否可行

Fel*_*ing 19

您可以(并且应该)使用列表理解:

squared = [x**2 for x in lst]
Run Code Online (Sandbox Code Playgroud)

map每个元素进行一次函数调用,而lambda表达式非常方便,使用map+ lambda大多比列表理解慢.

Python模式 - 优化轶事值得一读.


kef*_*hou 9

除了lambda和列表推导之外,您还可以使用生成器.List comprehension在调用时计算所有正方形,生成器在迭代列表时计算每个正方形.当输入大小很大或者只使用结果的某些初始部分时,生成器会更好.

def generate_squares(a):
    for x in a:
        yield x**2 

# this is equivalent to above
b = (x**2 for x in a)
Run Code Online (Sandbox Code Playgroud)

  • 为了完整性:您可以通过例如`tuple(generate_squares(original))`或`list(generate_squares(original))`来强制执行生成器的初始评估(即获得实际结果). (2认同)

phi*_*hag 6

squared = lambda li: map(lambda x: x*x, li)
Run Code Online (Sandbox Code Playgroud)

  • 更多"pythonic"将是:`lambda lst:[x*x for x in lst]` (2认同)