在分配之前需要引用局部变量

时间:2011-05-29 01:39:31

标签: python

我目前正在研究一种排列算法,该算法将用于旅行销售人员的问题。我有一种计算循环成本的方法,该方法将调用方法(currentBest)以查看此排列是否优于currentBest。

    def currentBest(newCost):
        if newCost < currentBest:
            currentBest = newCost
        return currentBest

但我第一次运行此代码时currentBest将没有值,所以我想我必须先为它分配一个值,但它必须记住另一个排列的currentBest值,以便在顶部生成currentBest = 999我认为不会起作用的代码。

谢谢

2 个答案:

答案 0 :(得分:3)

如果您要在列表中找到最小值,请执行以下操作:

>>> min([9,2,4,8,5,6])
2

答案 1 :(得分:0)

不要使用幻数,而是使用Python的currentBest初始化None

然后,您应检查currentBest is None是否为newCost,如果是,则可以为其指定值>>> currentBest = None >>> def current_best(newCost): ... global currentBest ... if currentBest is None or newCost < currentBest: ... currentBest = newCost ... return currentBest ... >>> current_best(3) 3 >>> current_best(4) 3 >>> current_best(2) 2 并继续。

E.g(在Python 2.7和3.2中):

>>> min([3, 4, 2])
2

但实际上你应该使用min()

{{1}}