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

时间:2016-12-01 17:29:37

标签: python list function random integer

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

不确定如何纠正此问题。谢谢。

3 个答案:

答案 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}}