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