0

我正在尝试查找列表的长度。

In [77]: reduce(lambda acc, x: acc + 1, [x for x in range(8)])
Out[77]: 7

In [78]: reduce(lambda acc, x: acc + 1, [x for x in range(8)], 0)
Out[78]: 8

但似乎我需要传递初始值才能使其工作。为什么 ?

4

2 回答 2

2

第一个从第一个元素 (0) 开始,并为其他七个元素加 1。第二个从 0 开始,并为八个元素中的每一个添加 1。

于 2012-06-06T09:56:52.240 回答
1

如果您不传递起始值,则列表的第一个值将用作起始值,并且永远不会作为x参数传递给您的 lambda 函数,因此您实际上会得到my_list[0] + len(my_list) - 1结果。

于 2012-06-06T09:56:24.087 回答