我正在用模拟退火处理旅行推销员问题,需要编写一个函数来交换列表中的两个元素(列表包含推销员要去的目的地,我假设他从返回的同一城市开始)。我已经包含了以下代码:
def new_walk(old_walk):
    n1 = rand.randint(1, len(old_walk)-2)
    n2 = rand.randint(1, len(old_walk)-2)
    walk = old_walk
    walk[n1], walk[n2] = walk[n2], walk[n1]
    return walkn1和n2是两个整数,对应于我想要切换的两个随机列表索引,len(old_cycle)-2在randint函数的最大值背后的推理是,我不想将最后一个点与任何其他点进行切换。如果我在函数定义中包含一条print语句,它会给出正确的结果,即old_cycle switched的两个元素。但是,一旦我将它返回给main函数,它就会返回old_cycle列表。任何帮助都将不胜感激!
https://stackoverflow.com/questions/47399777
复制相似问题