如何更改此函数调用和算法以在大小为n的列表中找到值最小的字符串。不使用min函数

2024-10-04 09:25:07 发布

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

如何更改此函数调用和算法以在大小为n的列表中找到值最小的字符串。此外,我还了解内置的min函数,我只是试图理解其机制。让我先说我是第一学期的学生,所以我为我的无知提前道歉。你知道吗

def main():


    strOne = 'stack'
    strTwo = 'over'
    strThree = 'flow'
    strFour = 'please'
    strFive = 'help'

    first = alphabetical(strOne, strTwo, strThree, strFour, strFive)

    print(first)

def alphabetical(one, two, three, four, five):
    low = one
    if two < low:
        low = two
    if three < low:
        low = three
    if four < low:
        low = four
    if five < low:
        low = five  
    return low

main()

    ###################################################################      
    # str_list = ['stack', 'over', 'flow', 'please', 'help'] ??       #
    # for i in str_list: ?? perhaps on the right track with this idea.#
    #       first = alphabetical(i) ?? maybe                          #  
    ###################################################################

Tags: ifstackmaindefoverlowfirstthree
3条回答

您可以使用内置函数min:

>>> min('stack', 'over', 'flow', 'please', 'help')
   'flow'

使用排序会进行太多比较。要模拟min所做的工作,您应该只对数据进行一次传递,更新到目前为止看到的最佳(最低)值。你知道吗

>>> def lowest(sequence):
        'Find the lowest value in a sequence in just one-pass'
        best = sequence[0]
        for i in range(1, len(sequence)):
            if sequence[i] < best:
                best = sequence[i]
        return best

>>> lowest(['stack', 'over', 'flow', 'please', 'help'])
'flow'

^{}将对列表进行适当排序。元素[0]是列表中的第一个元素。在没有固定参数函数的情况下,这应该是完成所做工作所需的一切。你知道吗

在python交互式shell中玩:

>>> l = ['stack', 'over', 'flow']
>>>
>>> l.sort()
>>>
>>> l
['flow', 'over', 'stack']
>>> l[0]
'flow'

一个程序

def main():
    str_list = ['stack', 'over', 'flow', 'please', 'help']

    str_list.sort()    # Doesn't return anything; sorts the list in-place.

    print 'First string:', str_list[0]

if __name__ == '__main__':
    main()

相关问题 更多 >