功能不返回切换列表

时间:2017-11-20 19:38:38

标签: python

我正在研究模拟退火的旅行商问题,并且需要编写一个函数来交换列表中的两个元素(列表包含销售人员前往的目的地,我假设他从同一个开始他返回的城市)。我已经包含以下代码:

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 walk

n1和n2是对应于我要切换的两个随机列表索引的两个整数,len(old_cycle)-2函数最大值randint后面的推理是我不想要的用其他任何一个切换最后一个点。 如果我在函数定义中包含print语句,它会给出正确的结果,old_cycle的两个元素被切换。但是,一旦我将它返回到main函数,它就会返回old_cycle列表。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

我尝试过使用我的python shell,版本是3.5.2,但结果显示你的代码运行良好。纯粹基于python编程,我强烈建议您使用walk = old_walk[:]复制列表。