问题描述
将子列表的元素与另一个没有重复的子列表合并
我正在解决车辆路径问题并获得最初的最佳解决方案,我想被利用并且需要在合并它们时摆脱重复的节点。 我的问题我想将元素 [8] 的子列表与其他携带条件等于 3 个元素的子列表合并,但因为有两个集合包含 3 个元素,如 [18,22,34,8],[35,36,37,8] 并且我需要将元素 8 随机集成到其中一个中
bestsolution= [[22,15,20,2,32,30,4,17],[27,8,9,14,33,21,5,13],[26,28,6,31,11],[18,34],37],[8]]
for a in bestsolution:
if len(a)==1:
p=a
del bestsolution[-1]
for b in bestsolution:
if len(b)==2:
b.extend(p)
print("p",b)
print("bestsolution1-2",bestsolution)
elif len(b)==3:
b.extend(p)
print("p",b)
print("bestsolution1-3",bestsolution)
my results:
p [18,8]
bestsolution1-3 [[22,37]]
p [35,8]]
对于每个运行程序,我同时得到两个结果,所以怎么可能拒绝第二个解决方案。
'''
code targeted:
bestsolution1-3 [[22,8]]
'''
谢谢
解决方法
回答/ 代码将是: '''
bestsolution= [[22,15,20,2,32,30,4,17],[2,3,4],[27,8,9,14,33,21,5,13],[26,28,6,31,11],[18,22,34],[35,36,37],[8]]
if len(a)==1:
p=a
del bestsolution[-1]
for b in bestsolution:
if len(b)==2:
b.extend(p)
print("p",b)
print("bestsolution1-2",bestsolution)
break
elif len(b)==3:
b.extend(p)
print("p",b)
print("bestsolution1-3",bestsolution)
break
elif len(b)==4:
b.extend(p)
print("p",b)
print("bestsolution1-4",bestsolution)
break
''' 预期输出:
p [18,34,8]
bestsolution1-3 [[22,8],37]]
''' 尝试了很多时间后我得到了最终结果,真的没想到我通过放置关键字(Break)解决的问题会阻止在第二次迭代中执行程序,所以我们只会得到一个解决方案。 如果有人有意见,我会很高兴。