在python中获取不相交列表的条件合并列表

在python中获取不相交列表的条件合并列表,python,list,cplex,gurobi,Python,List,Cplex,Gurobi,给定一组I={0,1,2,3,4},我的代码生成可行的最优路由,结果如下:x[0,2]=1,x[2,4]=1,x[4,3]=1(意思是从节点0到节点2,然后从2到4,然后从4到3),剩余的x[I,j]=0(x[0,1]=0,x[0,3]=0,x[2,3]=0,…) 我需要的是一个单一列表如下:FinalRoute=[0,2,4,3],它在单一列表中显示相同的概念 我试图将X[I,j]=1的X附加到FinalRoute,但我无法确定访问节点的顺序。有没有办法通过按访问顺序追加x[i,j]来创建一个

给定一组I={0,1,2,3,4},我的代码生成可行的最优路由,结果如下:x[0,2]=1x[2,4]=1x[4,3]=1(意思是从节点0到节点2,然后从2到4,然后从4到3),剩余的x[I,j]=0(x[0,1]=0,x[0,3]=0,x[2,3]=0,…)

我需要的是一个单一列表如下:FinalRoute=[0,2,4,3],它在单一列表中显示相同的概念


我试图将X[I,j]=1的X附加到FinalRoute,但我无法确定访问节点的顺序。有没有办法通过按访问顺序追加x[i,j]来创建一个单一列表(FinalRoute)?

不确定python中的x[0,2]是什么,但假设您有一个二维列表, 如果将值引用为x[0][2],而不是x[0,2]和x[0][2]==1,则表示从节点0转到节点2,下面是一个可能的解决方案:

matrix = [[0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 0, 0, 0], [0, 0, 0, 1, 0]]

path = []
node = 0
while node is not None:
    path.append(node)
    node = matrix[node].index(1) if 1 in matrix[node] else None

print(path)

嗯。。。。。。。。。。嗯?x2……我想我不能清楚地解释这个问题!我想要一个类似于[0,2,4,3](表示按顺序访问节点0,2,4和3)的列表,因为我手头有以下列表:x[0,1]=0,x[0,2]=1,x[0,3]=0,x[0,4]=0,x[1,2]=0,x[1,3]=0和x[1,4]=0,x[2,3]=0,x[2,4]=1,x[3,1]=0,x[3,2]=0,4]=0。x[4,1]=0,x[4,2]=0,x[4,3]=1这意味着,在x[i,j]=1的地方,将i和j添加到单个列表中(但保留访问顺序!)谢谢你,乔。这似乎是一个明智的做法;然而,您通过观察创建了矩阵(很可能)。我怎样才能自动创建一个类似矩阵的列表?我不明白你在问什么。我的矩阵只是一个例子,我假设你的代码会产生类似的结果,然后你的问题是如何通过矩阵得到路径,我给了你答案。如果这不是您需要的,那么请更准确地指定您需要的,最好是在一个示例中。