创建100个随机整数的列表,返回最大值



编写一个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)

最新更新