1

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

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                          #  
    ###################################################################
4

3 回答 3

2

使用sort 进行太多比较。要模拟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'
于 2013-05-20T06:15:42.763 回答
0

您可以使用内置函数 min:

>>> min('stack', 'over', 'flow', 'please', 'help')
   'flow'
于 2013-05-20T09:23:08.517 回答
0

list.sort()将对列表进行就地排序。元素[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()
于 2013-05-20T04:16:06.430 回答