1. 程式人生 > >python3.x中lambda表示式遇到的一些問題以及解決辦法

python3.x中lambda表示式遇到的一些問題以及解決辦法

lambda表示式

在python3中 使用reduce,map會和2.x版本有很多區別

想正常展示結果,需要一些一些動作。

map函式,不再返回 陣列,需要轉換

例如

map(lambda x: x ** 2, [1, 2, 3, 4, 5])

將會顯示成:

<map object at 0x0000000002D4F898>

需要轉換一下

>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))
[1, 4, 9, 16, 25]

>>> list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
[3, 7, 11, 15, 19]

reduce函式:
在Python 3裡,reduce()函式已經被從全域性名字空間裡移除了,它現在被放置在fucntools模組裡 用的話要 先引
入:
>>> from functools import reduce

reduce函式的定義: reduce(function, sequence[, initial]) -> value function引數是一個有兩個引數的函式,reduce依次從sequence中取一個元素,和上一次呼叫function的結果做引數再次呼叫function。 第一次呼叫function時,如果提供initial引數,會以sequence中的第一個元素和initial作為引數呼叫function,否則會以序列sequence中的前兩個元素做引數呼叫function。

>>> reduce(lambda x, y: x + y, [2, 3, 4, 5, 6], 1)
21
>>> reduce(lambda x, y: x + y, [2, 3, 4, 5, 6])
20