【问题标题】:How to merge lists with alternating elements?如何将列表与交替元素合并?
【发布时间】:2021-08-24 20:51:24
【问题描述】:

我们有两个列表list1 = [10,30,50]list2 = [2,4,6],我们想要输出[10,2,30,4,50,6](而不是[10,30,50,2,4,6],它更容易生成)。列表可能很长,因此手动解决方案 list1[0] + list2[0] + list1[1] + ... 对我们来说不可行。

【问题讨论】:

  • 谢谢,但我想避免实现我自己的合并算法,我假设在 python 中有一个更简单的解决方案
  • 连接和排序,或者使用zip() 这些基本上是你的选择
  • 您是否知道列表可以以这种特定方式排序,或者它们可以是例如[1,4,5][2,3,6] 在这种情况下应该是什么结果?
  • yes 总是相同的长度

标签: python concatenation


【解决方案1】:

zip() 从每个列表中一次抓取一项并将它们配对:

>>> list(zip(list1, list2))
[(1, 2), (3, 4), (5, 6)]

然后您可以使用第二个循环来flatten 对:

>>> [item for pair in zip(list1, list2) for item in pair]
[1, 2, 3, 4, 5, 6]

请注意,如果列表长度不同,zip() 将忽略较长列表中的额外项目。

【讨论】:

    【解决方案2】:
    def sortLists(list1, list2):
        return sorted(list1+list2)
    print(sortLists([1,2,5], [3,4]))
    

    输出将是:

    [1,2,3,4,5]
    

    【讨论】:

      【解决方案3】:

      如果列表是整数,如问题中所示,您可以简单地将两个列表组合起来,然后对它们进行排序

      list1.extend(list2)
      sorted(l1)
      

      【讨论】:

      • 也许这是一个使用整数的坏例子,因为我们的实际列表是字符串,关键是列表的顺序很重要。我们不能简单地排序
      • 好吧,你没有在问题中提到这一点。
      猜你喜欢
      • 2021-11-09
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 2019-04-28
      • 2018-04-11
      • 1970-01-01
      相关资源
      最近更新 更多