我正在从checkio-python编码游戏开始一项小任务。它涉及硬编写内置函数min()和max()。
无论如何要“存储”最小值或最大值,我首先考虑初始化变量,然后在其中存储相应的最低或最高值。
min_value = None
...function to compare element 1 with element 2 of a list and find lowest..
min_value = lowest_value
...function continues
当我意识到我忘记将min_value与lower_value进行比较时,确保我将拥有“全局”最低值(整个列表)。但是当我比较它时,它会给我一个带有第一个初始化变量的NoneError。
min_value = None
...function to compare element 1 with element 2 and find lowest..
if lowest_value < min_value:
NoneError
那么如何在没有值的情况下初始化一个值,在这种情况下,该值也是最高可能值,然后在第一次比较后会发生变化。
我希望,我能够清楚地表达我的问题。
谢谢!
答案 0 :(得分:0)
取决于值的类型。
对于int,请使用:
min_value = sys.maxsize
对于浮动,然后使用:
min_value = float('inf')
因此任何值都会小于那些最大数字。
或者,您可以使用列表的第一个值定义初始值,并从第二个值迭代列表。
min_value = list[0]
for value in list[1:]:
if value < min_value:
min_value = value
这样可以适用于任何类型。
更可替代地,您可以减少lambda表达式,如下所示:
min_value = reduce(lambda min_value, value: min_value if (min_value < value) else value, list)
答案 1 :(得分:0)
而不是将它们初始化为None
,您可以使用最大/最小整数值初始化它们:
import sys
min_value = sys.maxsize
max_value = -sys.maxsize
答案 2 :(得分:0)
您必须确保不与None进行比较:
mylist = [2, 5, 3, 6, 7, 4, 8]
min_value = None
for num in mylist:
if min_value is not None and num > min_value:
continue
else:
min_value = num
print "Minimum value: {0}".format(min_value)
产地:
Minimum value: 2