【问题标题】:Merge 3 lists into 1 list将 3 个列表合并为 1 个列表
【发布时间】:2016-04-18 03:34:56
【问题描述】:

我想将 3 个列表合并到一个列表中。 例如,我有三个列表:

a = [0, 3, 6, 9]
b = [1, 4, 7, 10]
c = [2, 5, 8, 11]

最后我想得到

merged = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

来自abc

有没有更快的方法来合并这 3 个列表? 这是我的代码:

merged = []
a = [0, 3, 6, 9]
b = [1, 4, 7, 10]
c = [2, 5, 8, 11]
for i in range(0, len(a)):
    merged.append(a[i])
    merged.append(b[i])
    merged.append(c[i])

【问题讨论】:

    标签: python list merge


    【解决方案1】:
    import itertools as it
    
    list(it.chain.from_iterable(it.izip(a,b,c)))
    

    【讨论】:

      【解决方案2】:
      a = [0, 3, 6, 9]
      b = [1, 4, 7, 10]
      c = [2, 5, 8, 11]
      d=[]
      print [j  for i in zip(a,b,c) for j in i]
      

      输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

      【讨论】:

        【解决方案3】:

        使用 reduce 是另一种选择:

        >>> a = [0, 3, 6, 9]
        b = [1, 4, 7, 10]
        c = [2, 5, 8, 11]
        >>> reduce(lambda x, y: list(x)+list(y), zip(a,b, c))
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
        

        【讨论】:

        • @Baruchel,zip 正在返回一个元组列表,因此您需要在添加之前将这些值包装到一个列表中。
        【解决方案4】:

        你可以这样做:

        a = [0, 3, 6, 9]
        b = [1, 4, 7, 10]
        c = [2, 5, 8, 11]
        merged=a+b+c
        merged.sort()
        

        由于您要添加列表,因此合并列表将包含 abc 中的所有值,但顺序不正确。这就是我使用 .sort() 对列表进行排序的原因

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-19
          • 1970-01-01
          • 2023-03-05
          • 2012-01-27
          相关资源
          最近更新 更多