【问题标题】:Can't find min() after I have found the max() and vice versa [duplicate]在找到 max() 后找不到 min(),反之亦然 [重复]
【发布时间】:2020-05-07 01:31:45
【问题描述】:

我正在尝试解决 HackerRank 问题,这里:https://www.hackerrank.com/challenges/find-second-maximum-number-in-a-list/problem

但是,当我尝试以下代码时:

if __name__ == '__main__':
    n = int(input())
    arr = map(int, input().split())

    maxVal = max(arr)
    print ("Max: ", maxVal)

    minVal = min(arr)
    print ("Min: ", minVal)

我得到输出:

Max:  6

还有以下错误:

Traceback (most recent call last):
File "Solution.py", line 9, in <module>
minVal = min(arr)
ValueError: min() arg is an empty sequence

但是,如果我翻转旋转并首先找到最小值而不是最大值:

if __name__ == '__main__':
n = int(input())
arr = map(int, input().split())

minVal = min(arr)
print ("Min: ", minVal)

maxVal = max(arr)
print ("Max: ", maxVal)

我得到输出:

Min:  2

还有以下错误:

Traceback (most recent call last):
File "Solution.py", line 8, in <module>
maxVal = max(arr)
ValueError: max() arg is an empty sequence

这对我来说没有任何意义,为什么如果我还没有找到最小值,它可以让我找到最大值,或者如果我还没有找到最大值,它会让我找到最小值。

如果有人可以向我解释这一点,我将不胜感激。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    map 函数创建一个生成器,它只能迭代一次。这就是为什么第二次引发错误。你应该让 arr 成为一个稳定的迭代器,就像一个列表。

    【讨论】:

      【解决方案2】:

      map 创建的迭代器在调用minmax 后为空。

      你可以这样做:

      if __name__ == '__main__':
          n = int(input())
          arr = map(int, input().split())
          arr = list(arr)
      
          maxVal = max(arr)
          print ("Max: ", maxVal)
      
          minVal = min(arr)
          print ("Min: ", minVal)
      

      【讨论】:

        猜你喜欢
        • 2012-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-27
        • 2014-11-08
        • 2012-02-16
        相关资源
        最近更新 更多