我对贪婪执行旅行商问题有以下代码。我无法将这个代码中lambda函数的功能包裹起来。在此代码中执行的lambda函数是什么?
def distance(p1, p2):
return ((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2) ** 0.5
def tsp_greedy(points, start=None):
if start is None:
start = points[0]
to_visit = points
path = [start]
to_visit.remove(start)
while to_visit:
closest = min(to_visit, key=lambda x: distance(path[-1], x))
path.append(closest)
to_visit.remove(closest)
return path
我意识到它正在创建一个x传入的匿名函数。但我不确定传递给这个函数的是什么。什么是x?
x是'to_visit'迭代中的每个值。 'min()'为每个值计算'key'值,'key'函数的值最低时返回值。 –
这个答案解决你的问题吗? http://stackoverflow.com/a/18296814/406423 – MadMike
它遍历路径中的所有项目,将当前正在访问的项目作为x传递,并与路径中的下一个路径进行比较(如路径[-1]) 获得最小距离。 – SerialDev