我如何改变这个函数调用和算法,以找到大小为n的列表中值最小的字符串,而不是min函数



我如何改变这个函数调用和算法,以找到大小为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                          #  
    ###################################################################

使用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'

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()

可以使用内置函数min:

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

最新更新