我目前正在研究一种排列算法,该算法将用于旅行销售人员的问题。我有一种计算循环成本的方法,该方法将调用方法(currentBest)以查看此排列是否优于currentBest。
def currentBest(newCost):
if newCost < currentBest:
currentBest = newCost
return currentBest
但我第一次运行此代码时currentBest将没有值,所以我想我必须先为它分配一个值,但它必须记住另一个排列的currentBest值,以便在顶部生成currentBest = 999我认为不会起作用的代码。
谢谢
答案 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}}