我有以下代码无法正常工作。
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很新,任何帮助都会受到赞赏。如果我犯了一个愚蠢的错误,请指出。
答案 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)