繁体   English   中英

使用reduce()查找列表中最大值的变化次数(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。 在这里,我们取010并计算: count + 1 if 0 < 10 else count + 0

  • 从该操作中获取结果,并将 function 应用于该元素和第二个元素,依此类推。

您不能指望以这种方式解决问题,因为这实际上都不会重新分配count - 无论迭代多少次,它都保持等于0 lambda的每个应用程序只产生01 此外,这些01的值会继续到下一步,而不是记住之前的最大值。

reduce不是这项工作的正确工具您可以通过在每一步计算一个 (迄今为止看到的最大值,计数) 的元组来强制它工作。 (您需要实际使用reduce返回的值,并且没有任何外部count 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM