python max(list)函数如何工作?

时间:2018-02-22 14:33:21

标签: python python-3.x

我有以下代码无法正常工作。

n = int(input())
arr = map(int, input().split())

num=max(arr)
x=list(set(arr))
print (x)

返回并清空列表“[]”。 但是,如果我从代码中删除num = max [arr]行,它将按预期工作。

n = int(input())
arr = map(int, input().split())

x=list(set(arr))
print (x)

输出是所有元素的列表,没有重复。 我想在程序中的其他地方使用max()值,但它似乎打破了列表形成。为什么会这样?我缺少max函数的基本属性吗?

编辑:为什么人们在没有任何答案的情况下贬低这个?我对python很新,任何帮助都会受到赞赏。如果我犯了一个愚蠢的错误,请指出。

2 个答案:

答案 0 :(得分:3)

n = int(input())  # unused - why put it in your example?
arr = map(int, input().split())  # returns an iterator

num=max(arr)      # consumes the iterator
x=list(set(arr))  # nothing in the iterator anymore
print (x)         # prints nothing

修正:

n = int(input())  # unused - why put it in your example?
arr = set(map(int, input().split()))  # returns an set named arr

num=max(arr)      # get num as max from set 
print (arr)       # prints the set named arr

在python 2中,map的表现不同 - 对于3,它是一个迭代器。消费后,迭代器“空”。您可以print(type(arr))查看 地图操作的结果。

阅读:map()

答案 1 :(得分:0)

我不确定为什么你需要在这种情况下使用地图。另一件事是,如果用户在尝试转换它时没有提供单个int,则会在输入上抛出错误。您可以输入您的输入,例如一串&1 39 6 5',将其转换为整数列表,然后找到最大值。

n = '1 4 6 23 5'
arr = [int(x) for x in n.split()]
max(arr)