這個問題在這里已經有了答案: 如何使用 python 的 map() 函式迭代串列串列 [關閉] (2 個回答) 2 天前關閉。
考慮以下串列:
arr = [[1, 2, 3], [3, 2, 1]]
我想得到它的平方,使用map一個lambda函式。結果應該是:
arr = [[1, 4, 9], [9, 4, 1]]
我試過這個:
print(list(map(lambda x: [lst**2 for lsts in arr for lst in lsts], arr)))
但我得到的答案是:
[[1, 4, 9, 9, 4, 1], [1, 4, 9, 9, 4, 1]]
uj5u.com熱心網友回復:
試試這個:
arr = list(map(lambda List: [x**2 for x in List], arr))
# Output : [[1, 4, 9], [9, 4, 1]]
您還可以使用嵌套映射:
arr = list(map(lambda List: list(map(lambda x: x**2, List)), arr))
# or
square = lambda x: x**2
arr = list(map(lambda List: list(map(square, List)), arr))
uj5u.com熱心網友回復:
像這樣的東西:
arr = [[1,2,3],[3,2,1]]
output = list(map(lambda x: [i**2 for i in x], arr))
print(output)
uj5u.com熱心網友回復:
這結合了lambdas 和串列理解:
arr = [[1, 2, 3], [4, 5, 6]]
print(list(map(lambda x: [i * i for i in x], arr)))
輸出:
[[1, 4, 9], [16, 25, 36]]
uj5u.com熱心網友回復:
考慮使用 numpy:
arr = [[1,2,3],[3,2,1]]
arr_numpy = np.array(arr)
result = arr_numpy ** 2
uj5u.com熱心網友回復:
你提到你想使用map,lambda但作為參考,你可以只使用串列推導來做到這一點,
[[y * y for y in x] for x in arr]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394079.html
上一篇:c語言模塊化思想和操作
下一篇:【Leetcode】刷題題單記錄
