Python - 定义变量而不初始化,但带有值

时间:2017-11-03 10:49:30

标签: variables initialization

我正在从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   

那么如何在没有值的情况下初始化一个值,在这种情况下,该值也是最高可能值,然后在第一次比较后会发生变化。

我希望,我能够清楚地表达我的问题。

谢谢!

3 个答案:

答案 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