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

2021-12-08 04:48:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码,它不工作的方式应该。你知道吗

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条回答
网友
1楼 ·

我不知道你为什么要用地图。另一件事是,如果用户没有提供一个int,那么您将在您的输入上抛出错误,因为您正在尝试转换它。你可以把你的输入,像一个字符串'1 4 6 23 5',把它转换成一个整数列表,然后找到最大值

n = '1 4 6 23 5'
arr = [int(x) for x in n.split()]
max(arr)
网友
2楼 ·
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

在Python2中,map的行为不同——对于3,它是一个迭代器。一旦使用,迭代器就是“空的”。如果您print(type(arr))查看映射操作的结果,您可以自己查看。你知道吗

读取:^{}

相关问题