【问题标题】:Is there any possibility to Merage element in sublist with another one by using certain condition?是否有可能通过使用特定条件将子列表中的元素与另一个元素合并?
【发布时间】:2021-08-23 06:16:53
【问题描述】:

将子列表的元素与另一个不重复的子列表合并


我正在努力解决车辆路线问题并获得最初的最佳解决方案,我希望被利用并且需要在合并它们时摆脱重复节点。 我的问题我想将元素 [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,22,34],[35,36,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, 22, 34, 8]
bestsolution1-3 [[22, 15, 20, 2, 32, 30, 4, 17], [27, 8, 9, 14, 33, 21, 5, 13], [26, 28, 6, 31, 11], [18, 22, 34, 8], [35, 36, 37]]
p [35, 36, 37, 8]
bestsolution1-3 [[22, 15, 20, 2, 32, 30, 4, 17], [27, 8, 9, 14, 33, 21, 5, 13], [26, 28, 6, 31, 11], [18, 22, 34, 8], [35, 36, 37, 8]]

对于每个运行程序,我同时得到两个结果,所以如何拒绝第二个解决方案。

'''

code targeted:
    bestsolution1-3 [[22, 15, 20, 2, 32, 30, 4, 17], [27, 8, 9, 14, 33, 21, 5, 13], [26, 28, 6, 31, 11], [18, 22, 34], [35, 36, 37, 8]]
'''

谢谢

【问题讨论】:

  • 什么是“车辆路径问题”? “被剥削”是什么意思?
  • “车辆路线问题”是指我工作的领域,“开发”的意思是投资最好的解决方案来改进它。
  • 如果其中任何一项与理解您的问题相关,您应该更明确地了解它们的实际含义,在问题中。如果他们不是,那么他们根本不应该被包括在内。即使你在下面回答,我仍然不知道你在问什么。您似乎在代码块中包含了许多不是代码的行,我不明白它们的用途。您希望尽可能明确和清楚地了解您实际遇到的问题,以便其他人能够理解和帮助!但很高兴你似乎已经把它整理好了 =)

标签: python-3.x if-statement nested extend del


【解决方案1】:

回答/ 代码将是: '''

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, 22, 34, 8]
bestsolution1-3 [[22, 15, 20, 2, 32, 30, 4, 17], [27, 8, 9, 14, 33, 21, 5, 13], [26, 28, 6, 31, 11], [18, 22, 34, 8], [35, 36, 37]]

''' 在尝试了很长时间后我得到了最终结果,真的没想到我通过放置关键字(Break)来解决会阻止在第二次迭代中执行程序,所以我们只会得到一个解决方案。 如果有人有意见,那将是一种乐趣。

【讨论】:

    最近更新 更多