编写一个Python函数,它将获取0到1000之间的100个随机整数的列表并返回最大值。 (注意:有一个名为max的内置函数,但假装你不能使用它。)
这是我试过的:
import random
list = []
for i in range(100):
list.append(random.randint(0,1000))
def max(list):
#sort list from least to greatest
answer = list.sort()
#get last item in list (max value)
list.pop()
return max
print (max(list))
正如您所看到的,我很困惑的是如何正确使用sort和pop方法返回max函数中的最大值。我现在得到了:
ParseError: bad input on line 12
这一行:
list.pop()
不确定如何纠正此问题。谢谢。
答案 0 :(得分:3)
1)你的缩进已经关闭
2)你设法用4行代码覆盖了2个Python内置代码(max()
和list()
))
3)my_list.sort()
不返回列表。它就地就地对列表进行排序。相反,sorted(my_list)
会返回一个列表,因此您可以my_list.sort()
或my_list = sorted(my_list)
。
4)你的return
错了。
请参阅以下代码:
a_list = []
for i in range(100):
a_list.append(random.randint(0, 1000))
def my_max(my_list):
return sorted(my_list)[-1] # here, the list we passed gets sorted and its last item is retrieved (item with index -1)
print(my_max(a_list))
其他有趣的答案(@Rob的帽子)有点骄傲:
def my_max(my_list):
return min(l, key:lambda i: 1/i)
或
def my_max(my_list):
return min(l, key:lambda i: -i)
答案 1 :(得分:2)
my_list.sort()
对列表本身进行排序。如果要将排序列表存储在answer
中,则应使用:
answer = sorted(my_list)
您还可以使用列表推导来生成第一个列表,如下所示:
>>> random
>>>
>>> my_list = [random.randint(0, 1000) for i in range(100)]
>>> answer = sorted(my_list)
>>> answer.pop()
996 # This should be different each time
现在,您的功能可以是:
def max(my_list):
# sort list from least to greatest
answer = sorted(my_list)
# get last item in list (max value)
max = answer.pop()
return max
如果您仍想使用相同的列表,可以执行以下操作:
my_list.sort()
max = my_list.pop()
请注意:我更喜欢调用列表my_list
,因为list
是一个python关键字。
答案 2 :(得分:2)
我通常会尽量避免使用具有预定义函数/内置名称的名称,这有助于经常避免出现问题。像这样它应该有用。
{{1}}