从列表中获取最大值和最小值

时间:2015-06-27 18:43:16

标签: python list python-2.7

我使用split删除空格并将字符串转换为列表并使用内置函数我试图找到列表的最大值和最小值,但我给出了不正确的ans我也想要在formate“xy”中的ans x和y分别为max和min。 当我打印列表时,它包含''列表的每个元素 在此先感谢。

我的代码:

def high_and_low(numbers):
    numbers = numbers.split()
    numbers = list(numbers)
    return max(numbers),min(numbers)


print high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")

2 个答案:

答案 0 :(得分:4)

>>> '2' > '10' True 返回字符串,并且您不会将字符串转换为实际数字。比较字符串时,比较的含义与比较数字时的含义不同:

In [1]: def high_and_low(s):
   ...:     numbers = [int(x) for x in s.split()]
   ...:     return max(numbers), min(numbers)
   ...: 

In [2]: high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")
Out[2]: (542, -214)

所以你需要将你的功能改为:

.container { 
    width: 400px; 
    height: 200px; 
    overflow: hidden; 
}
.container img { 
    width: 100%;
}

答案 1 :(得分:2)

min和max取一个键所以如果你实际上不想要返回整数,你可以使用0所以你比较整数而不是你现在正在做的字符串:

const size_t width = (sizeof(size_t) << 3)) - 1;
size_t value = {boolean value};
value = ((int64_t) (value << width)) >> width;

如果你想要整理,可以使用key=int在分割后将字符串转换为int:

def high_and_low(numbers):
    numbers = numbers.split()
    return max(numbers,key=int),min(numbers,key=int)

分割后数字已经是一个列表,因此使用map是多余的。

来自docs

  

序列对象可以与具有相同序列类型的其他对象进行比较。比较使用词典排序:首先比较前两个项目,如果它们不同,则确定比较的结果;如果它们相等,则比较接下来的两个项目,依此类推,直到任一序列用完为止

因此,对于分钟,您只能得到正确的答案def high_and_low(numbers): numbers = map(int,numbers.split()) return max(numbers,key=int),min(numbers,key=int) ,因为-2是&lt; -6和-3,一旦你添加numbers = list(numbers)或以-1开头的任何内容,你将再次看到不正确的输出。

最大值得-214,因为-1大于任何其他子字符串的第一个字符。