[英]Trying to solve with python map function with lambda expression inside for loop
[英]High Order Map Function with Lambda Expression Python
我正在嘗試編寫更高階的 function ,它將采用 2 個 lambda 表達式和一個列表,並將返回結果。 我在下面有我的代碼。
#Square
square = lambda x:x ** 2
#Mod_2
mod_2 = lambda x:x % 2
def map(f,x):
return f(x)
它看起來很簡單,而且應該如此。 這是我得到的錯誤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "main.py", line 8, in map
return f(x)
File "main.py", line 2, in <lambda>
square = lambda x:x ** 2
TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'int'
結果應該是這樣的:
>>> map(square, [1, 2, 3, 4])
[1, 4, 9, 16]
>>> map(square, [])
[]
>>> map(mod_2, range(1, 11))
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
這不是家庭作業,而是更好地理解高階函數的簡單方法。 此外,這不是任何其他提交的重復,因為這是修復我的代碼,而不是如何解決問題本身。 如果需要重新考慮,請回復並告訴我如何。 謝謝!
使用列表推導:
def map(f,x):
return [f(i) for i in x]
您也可以在這里使用 lambda:
map = lambda f, x: [f(i) for i in x]
或者只使用內置的map() 。
map() 是一個內置的 function。 你為什么要重新定義它? 刪除 def map()。
#Square
square = lambda x: x**2
#Mod_2
mod_2 = lambda x:x % 2
r1 = list(map(square, [1, 2, 3, 4]))
r2 = list(map(mod_2, range(1, 11)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.