如何在列表中找到最大的数

2024-09-28 01:31:13 发布

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

所以我试图找到列表中第三大的数字/字符串。这是我目前掌握的密码

def big(inputString):
    big1 = inputString[0]
    big2 = inputString[0]
    big3 = inputString[0]
    for char in inputString:
        if char > big1:
            big1, big2,big3 = char,big1,big2
        elif big1 > char > big2 > big3:
            big3 = char
    print('largest',big1,'second largest',big2,third largest,big3)

当用户输入字符串列表时,输出应该如下所示:

^{pr2}$

但我得到的结果是

^{3}$

有人能告诉我我的代码哪里有错误吗


Tags: 字符串in密码列表forifdef数字
3条回答

您可以使用内置的sorted对列表进行排序。^{{cda}可以接受

您甚至可以向sorted传递一个字符串,它会将单个字符排序到一个列表中。在

要获得列表中第三个、第二个或第n个最大的项,只需按降序对列表进行排序,然后调用该项,例如,obj[0]表示最大的项,obj[1]表示第二个最大的项,等等

让我们把它放在一起:

""" Returns nth largest object from string or list """
def nth_largest(obj, n=1):
    obj = sorted(obj, reverse=True)
    return obj[n-1]

>>> nth_largest('abxztu', 3)
'u'

你不是在处理big2>;char>;big3的案子。在

另外,您也可以对字符串进行排序,然后按任意顺序打印字符,而不是这种手动蛮力方法。在

s = sorted('abxztu')
print s # ['a', 'b', 't', 'u', 'x', 'z']

现在从尾部打印它们,或者如果您想反转s,从头部打印它们。在

@Chris_Rands建议的更好的答案是使用heapq.n最大. 在

^{pr2}$

你可以简单地这样做:

def big(inputString):
    l = sorted(list(inputString)) #Turning the input into a list and sorting it
    l = l[::-1] #Reversing the list
    print(l[0],l[1],l[2]) #Printing out the first three element of the list

这是一个测试实例:

^{pr2}$

编辑1

另一个测试运行示例:

>>> big("helloworld")
w r o

相关问题 更多 >

    热门问题