寻找一种在嵌套列表中查找所有交换可能性的pythonic方法

问题描述 投票:0回答:1

我正在寻找一种在列表列表边界内优雅地生成所有可能的“掉期”的方法。我需要检查一条包含多条路线的特定列表,将两个城市互换会对该路线列表的总长度产生什么影响。所有城市都用整数表示。考虑这个例子:

route_list = [[0, 7, 40, 41, 96, 34, 75, 127, 48, 65, 79, 27, 126, 78, 0],
              [0, 56, 45, 2, 67, 66, 59, 124, 82, 133, 102, 54, 57, 0]]

[每天,路由从0(代表HQ位置的整数)开始,并在此结束。我需要的是列出所有可能的交换。我已经指出必须使用**进行交换,因此预期的输出将是:

all_possible_swaps =

[[0, **40**, **7**, 41, 96, 34, 75, 127, 48, 65, 79, 27, 126, 78, 0],
 [0, 56, 45, 2, 67, 66, 59, 124, 82, 133, 102, 54, 57, 0]],

[[0, **41**, 40 ,**7**, 96, 34, 75, 127, 48, 65, 79, 27, 126, 78, 0],
 [0, 56, 45, 2, 67, 66, 59, 124, 82, 133, 102, 54, 57, 0]],

[[0, **96**, 40 ,41, **7**, 34, 75, 127, 48, 65, 79, 27, 126, 78, 0],
 [0, 56, 45, 2, 67, 66, 59, 124, 82, 133, 102, 54, 57, 0]],

直到直到

[[0, **57**, 40 ,41, 96, 34, 75, 127, 48, 65, 79, 27, 126, 78, 0],
 [0, 56, 45, 2, 67, 66, 59, 124, 82, 133, 102, 54, **7**, 0]],

然后,对于路径中的第一个元素(在本例中为7),所有可能的“掉期”已用尽。然后,代码应移至下一个元素40(在这种情况下为40),并与元素40进行所有可能的交换。

在过去的几天里,我一直在为此努力,我只能提出一个具有四重for循环的解决方案。我感觉这可以更加优雅地完成,因为交换数组元素是任何编程语言的基本组成部分。有人知道这个问题的pythonic

解决方案吗?

我正在寻找一种在列表列表边界内优雅地生成所有可能的“掉期”的方法。我需要检查具有多条路线的特定列表,两个城市之间的交换是什么...

python swap nested-lists
1个回答
1
投票

itertools.permutations是一个很好的函数,它可以帮助您返回列表的所有可能选项。去除列表开头和结尾的0(起点)会产生以下假设routelist这可能对您有帮助:

© www.soinside.com 2019 - 2024. All rights reserved.