【问题标题】:Is the max function limited to work only with a list of length 9? [duplicate]max 函数是否仅限于使用长度为 9 的列表? [复制]
【发布时间】:2020-02-24 14:02:13
【问题描述】:
list= ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10' ,'11']
print( "Max value element : ", max(list))

o/p: 9 为什么我会收到这样的错误?

【问题讨论】:

  • 这是因为它们是字符串,按第一个字符排序 - '11' < '9'
  • 您现在可以考虑接受答案或发表评论以获取详细信息;)以奖励那些为您花费时间的人;)

标签: python


【解决方案1】:

按字典顺序,'9' > '1',所以'9' 将被判断为比11“更大”,就像以'z' 开头的单词将比以'a' 开头的单词“更大”一样.

您可以通过添加max() 的键来保持列表不变并将它们作为整数进行比较:

print("Max value element: ", max(lst, key=int))

【讨论】:

    【解决方案2】:

    由于您的列表包含string 元素,它们按字典顺序排序,其中11 9 从第一个字符到最后一个字符,您想要的是

    # don't use built-in 'list' name
    values = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10' ,'11'] 
    
    1. 使用这些值一次,只是为了获得最大值:

      print( "Max value element : ", max(values,key=int))
      
    2. 解析为 int 列表,并在之后重用它

      values = list(map(int, values))
      print( "Max value element : ", max(values))
      

    【讨论】:

    • 您可以使用max(map(int,values))。无需将其显式转换为 list
    • @Ch3steR 是的,但是 OP 想再次使用这些值,它应该被包装
    • 同意。如果他不想更改原始列表 OP 可以随时使用max(values,key=int)。很好的答案,如此赞成。
    【解决方案3】:

    你有一个字符串列表,而不是整数。

    将字符串列表转换为整数试试

    int_list = [int(el) for el in list]
    

    那么你的代码就会产生正确的结果 (11)

    【讨论】:

      猜你喜欢
      • 2018-05-06
      • 2021-07-24
      • 2010-09-20
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2018-02-14
      • 2017-12-05
      相关资源
      最近更新 更多