【问题标题】:How to combine two lists of lists element-wise?如何按元素组合两个列表列表?
【发布时间】:2020-07-19 09:29:43
【问题描述】:

在 Python 中,我想以一种非常具体的方式组合列表列表,但我还没有找到它。欢迎任何想法!

使用以下输入:

firstList = [[[1], [2], [3]], [[4], [5], [6]]]
secondList = [[[11], [12], [13]], [[14], [15], [16]]]

我想得到以下输出:

[[[1, 11], [2, 12], [3, 13]], [[4, 14], [5, 15], [6, 16]]]

我试过了:

[list(a) for a in zip(firstList, secondList)]

但这会返回:

[[[[1], [2], [3]], [[11], [12], [13]]], [[[4], [5], [6]], [[14], [15], [16]]]]

我需要所需的输出来获得正确的格式,以便能够使用模块 tslearn 中的函数 TimeSeriesKMeans() 和二维时间序列

【问题讨论】:

    标签: python list time-series reorderlist


    【解决方案1】:

    由于您有嵌套列表,因此您需要在列表中加倍 zip。你可以这样做:

    [[a + b for a, b in zip(x, y)] for x, y in zip(firstList, secondList)]
    

    代码:

    firstList = [[[1], [2], [3]], [[4], [5], [6]]]
    secondList = [[[11], [12], [13]], [[14], [15], [16]]]
    
    result = [[a + b for a, b in zip(x, y)] for x, y in zip(firstList, secondList)]
    # [[[1, 11], [2, 12], [3, 13]], [[4, 14], [5, 15], [6, 16]]]
    

    【讨论】:

    • 非常感谢!真的很棒的答案,非常优雅的编码!
    【解决方案2】:

    你也可以使用itertools.chain:

    from itertools import chain
    
    result = [list(zip(chain(*l1), chain(*l2)))
              for l1, l2 in zip(firstList, secondList)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2012-10-15
      相关资源
      最近更新 更多