在减少使用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)
答案 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]