编写一个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))
您可以看到,我感到困惑的是如何正确使用排序和pop方法来返回最大函数中的最大值。我目前得到:
ParseError: bad input on line 12
这是这一行:
list.pop()
不确定如何纠正此问题。谢谢。
1)您的凹痕不在
2)您设法覆盖了2条代码(max()
和list()
)的2个python内置)
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)
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关键字。
我通常会尝试避免使用具有预定义函数/内置名称的名称,这有助于避免经常避免问题。这样它应该起作用。
import random
my_list = []
for i in range(100):
my_list.append(random.randint(0,1000))
def my_max(my_list):
#sort list from least to greatest
my_list.sort()
#get last item in list (max value)
my_max = my_list.pop()
return my_max
print my_max(my_list)