![](/img/trans.png)
[英]How do I find the maximum integer in a list by mimicking the reduce function in Python?
[英]Find how many times changes maximum value in a list with reduce() (Python)
使用reduce()
function,我必须找出列表的最大值变化了多少次。 这是我的代码,但我不明白为什么count
保持为 0。
from functools import reduce
count = 0
heights = [10, 8, 11, 2, 1, 4, 13, 11]
reduce(lambda a, b: count + 1 if a < b else count + 0, heights, 0)
print(count)
reduce
的工作方式如下:
取默认值(最后一个参数)和序列的第一个元素,并应用提供的 function。 在这里,我们取0
和10
并计算: count + 1 if 0 < 10 else count + 0
。
从该操作中获取结果,并将 function 应用于该元素和第二个元素,依此类推。
您不能指望以这种方式解决问题,因为这实际上都不会重新分配count
- 无论迭代多少次,它都保持等于0
。 lambda
的每个应用程序只产生0
或1
。 此外,这些0
和1
的值会继续到下一步,而不是记住之前的最大值。
reduce
不是这项工作的正确工具,但您可以通过在每一步计算一个 (迄今为止看到的最大值,计数) 的元组来强制它工作。 (您需要实际使用reduce
返回的值,并且没有任何外部count
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.