Python 2 Max函数

时间:2018-08-03 02:12:42

标签: python python-2.7 max

这是我的代码

def max_array_diff(line):
    return max(line)

line = raw_input().split()
print max_array_diff(line)
print line

这是我得到的输出

9
['1', '9', '2', '-7', '10', '4', '3']

我需要输出为10。raw_input()作为字符串输入,我已将其转换为列表,并试图从中获取最大值,但它始终返回9而不是10。我是什么?做错了吗?

3 个答案:

答案 0 :(得分:6)

您应该在拆分输入后将输入转换为整数;否则,您将使用max()做字符串比较。

更改:

line = raw_input().split()

收件人:

line = map(int, raw_input().split())

或者,您可以将int指定为key的{​​{1}}函数,以便根据字符串输入的整数值进行比较。

更改:

max()

收件人:

return max(line)

答案 1 :(得分:2)

您需要执行整数比较而不是字符串比较:

return max(line, key=int)

答案 2 :(得分:1)

或者另一种方法是做

type StringParseResult = 
    [string]
    | { key: string, value: any }

const parseStr = (str: string): StringParseResult => {
    if (str.indexOf('/') === -1) {
        return [str];
    }
    const [key, ...rest] = str.split('/');
    return {key, value: parseStringArray([rest.join('/')]) }
}

const parseStringArray = (arr: string[]): any => {
    const result: any = {};
    for (const str of arr) {
        const partial = parseStr(str);
        if ('key' in partial) {
            result[partial.key] = partial.value;
        }
        else {
            return partial;
        }
    }
    return result;
}

console.log(
    parseStringArray(["CBSE/X", "HOS/A/A1", "FOOD/S"])
);

要获得最高的成就:

print(sorted(raw_input().split(),key=int))

要获得前3名:

print(sorted(raw_input().split(),key=int)[0])