我可以找到最大值,我可以找到平均值,但我似乎无法找到最小值。我知道有一种方法可以在循环中找到最大值和最小值但是现在我只能找到最大值
def large(s)
sum=0
n=0
for number in s:
if number>n:
n=number
return n
有没有办法用这个函数找到最小值?
答案 0 :(得分:3)
您必须将n设置为一个非常高的数字(高于任何预期的数字)或从列表中取一个来开始比较:
def large(s)
n = s.pop()
for number in s:
if number < n:
n = number
return n
显然你已经达到了这个目的的最大值和最小值。
答案 1 :(得分:2)
查找最小值采用与查找最大值相同的算法,但比较结果相反。 <
变为>
,反之亦然。将最小值初始化为可能的最大值,即float("inf")
,或初始化为列表的第一个元素。
仅供参考,Python为此目的提供了内置min
功能。
答案 2 :(得分:2)
您可以使用Python的内置sum(),min()和max()函数进行此类分析。
但是,如果您想一次性完成所有操作或者只是想学习如何自己编写,那么过程是1)迭代输入并且2)跟踪累积总和,最小到目前为止看到的价值,以及迄今为止看到的最大值:
def stats(iterable):
'''Return a tuple of the minimum, average, and maximum values
>>> stats([20, 50, 30, 40])
(20, 35.0, 50)
'''
it = iter(iterable)
first = next(it) # Raises an exception if the input is empty
minimum = maximum = cumsum = first
n = 1
for x in it:
n += 1
cumsum += x
if x < minimum:
minimum = x
if x > maximum:
maximum = x
average = cumsum / float(n)
return minimum, average, maximum
if __name__ == '__main__':
import doctest
print doctest.testmod()
代码还有一个细微差别。它使用输入iterable中的第一个值作为最小值,最大值和累积总和的起始值。这优于创建正或负无穷大值作为最大值和最小值的初始值。 FWIW,Python自己的内置函数以这种方式编写。
答案 3 :(得分:1)
一个简单的解决方案:
def minimum(lst):
n = float('+inf')
for num in lst:
if num < n:
n = num
return n
说明:首先,将n
(最小数字)初始化为一个非常大的值,使得任何其他数字都小于它 - 例如,无限值。这是一个初始化技巧,如果列表为空,它将返回无限,这意味着列表为空并且它不包含最小值。
之后,我们遍历列表中的所有值,检查每个值以查看它是否小于我们假设为最小值的值。如果找到新的最小值,我们会更新n
的值。
最后,我们返回找到的最小值。
答案 4 :(得分:1)
为什么不将large
替换为small
,将>
替换为<
?此外,如果您正在寻找最小值,则可能不希望将n
初始化为0。您的大型函数仅适用于正数列表。此外,你的def线后错过了一个“:”。
def small(s):
if len(s)==0: return None
n = s[0]
for number in s[1:]:
if n < number:
n=number
return n
通过返回None
来处理空列表。
答案 5 :(得分:1)
使用此功能查找最小值是
min=-large(-s)
逻辑只是找到负列表的最大值,它给出了最小值
答案 6 :(得分:1)
您可以使用相同的函数进行迭代而不是n = 0使用n = L [0]
def min(L): N = L [0] 对于L中的x: 如果是x
答案 7 :(得分:0)
def min(s):
n = s [0]
for number in s:
if number < n:
n=number
return n