Python filter lambda - 减少时减少了多少项目

Python filter lambda - how many items were reduced while reducing

是否可以知道在使用 pythonreduce 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)

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

我不知道为什么人们不赞成你的问题。

这是我的答案,使用 itertools 做你想做的事:

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

islice 将 只消耗前 3 个元素(因为我们传入了 3),所以我们不必担心列表太长,或者即使有只有一个满足的数字,代码不会破,这就是函数式编程.

的妙处

结果:

[1, 2, 3]