Python过滤器lambda - 在减少时减少了多少项

时间:2017-09-11 14:21:52

标签: python lambda filter reduce

在减少使用python reduce lambda时,是否可以知道已经减少了多少项?如果是,如何将此代码转换为它?

例如:

numbers = [1,-1,2,-2,3,-3,4,-4,5,-5,6,-6]
new_list = []
for number in numbers:
   if number > 0 and len(new_list) < 3:
       new_list.append(number)

1 个答案:

答案 0 :(得分:1)

实际上,这是一个很好的问题,因为许多人无法在Python中使用一些有用的内置工具。

我不知道为什么人们会对你的问题进行投票。

以下是我的回答,使用 itertools 来做你想做的事:

import itertools
top3 = itertools.islice(filter(lambda x: x > 0, numbers), 3)
print(list(top3))

islice将仅消耗前3个元素(因为我们传入3),所以我们不必担心列表是否太长,或者即使只有一个满意的数字,代码不会中断,这是函数式编程的酷炫。

结果:

[1, 2, 3]