VRP,TSP路径编码,路径分割的方法

发布于:2023-01-20 ⋅ 阅读:(325) ⋅ 点赞:(0)

前两种为大佬写的,后面自己写的。

大佬1,运用列表推导式:导库,不导库,两种。

import more_itertools as mi 
 
s=[0,1,2,0,3,4,5,0,6,7,8,0,9,0]
resu =[i for i in mi.split_at(s, lambda x : x == 0) if i]
print(resu)
 
"""--result
[[1, 2], [3, 4, 5], [6, 7, 8], [9]]
"""
不导库,你上面的简写成:
s=[0,1,2,0,3,4,5,0,6,7,8,0,9,0]
 
a = ''.join(map(str, s)).split('0')
c = [list(map(int, i)) for i in map(list, a) if i] 
print(c)

大佬2

'''
遍历列表,遇到0就添加路径,空的也添加。
完事再去掉空路径
'''   
import numpy as np  
a=[1,2,0,4,5,6,0,0,0,0,7,0,8,9]
b=np.array(a)  
c=[] 
t=[]  
for i in a:    
    if(i!=0):   
        t.append(i)      
    else :      
        if len(t)!=0: 
            c.append(t)
            t=[]         
if len(t)!=0:
    c.append(t)   
print(c)

小弟,自己写的

'''
方案1:
情况1, 当前非零
[X0         XX               X]
 *          *                *
添加节点    添加节点      添加节点
添加路径                  添加路径

情况2, 当前为0
[0X    00    0]
 *     *     *
跳过  跳过  跳过

'''
a=[1,2,3,0,0,4,0,5,0]
c=[]
b=[]
for i in range(len(a)): 
    if i == len(a)-1:
        if a[i] != 0:
            b.append(a[i])
            c.append(b)
            b=[]
        else:
            continue
    else: 
        if   a[i] != 0 and a[i+1] != 0:
            b.append(a[i])
        elif a[i] != 0 and a[i+1] == 0:
            b.append(a[i])
            c.append(b)
            b=[]
        elif a[i] == 0:
            continue 
print(c)
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到