我正在寻找一个函数,它接受列表中的整数,如[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模式 - 优化轶事值得一读.
除了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)
squared = lambda li: map(lambda x: x*x, li)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25696 次 |
| 最近记录: |