如何将列表列表和列表的值合并为1个结果列表列表

时间:2017-01-30 13:24:54

标签: python

我有一个列表(a)列表和一个列表(b),它们具有相同的“长度”(在本例中为“4”):

a = [
      [1.0, 2.0],
      [1.1, 2.1],
      [1.2, 2.2],
      [1.3, 2.3]
    ]

b = [3.0, 3.1, 3.2, 3.3]

我想合并这些值以获得以下内容(c):

c = [
      [1.0, 2.0, 3.0],
      [1.1, 2.1, 3.1],
      [1.2, 2.2, 3.2],
      [1.3, 2.3, 3.3]
    ]

目前我正在做以下事情来实现它:

c = []
for index, elem in enumerate(a):
    x = [a[index], [b[index]]]  # x assigned here for better readability
    c.append(sum(x, []))

我的感觉是有一种优雅的方式来做到这一点...... 注意:列表要大得多,为简单起见我缩短了它们。它们总是(!)长度相同。

1 个答案:

答案 0 :(得分:3)

在python3.5中,在列表理解和就地解包中使用zip()

In [7]: [[*j, i] for i, j in zip(b, a)]
Out[7]: [[1.0, 2.0, 3.0], [1.1, 2.1, 3.1], [1.2, 2.2, 3.2], [1.3, 2.3, 3.3]]

在python 2中:

In [8]: [j+[i] for i, j in zip(b, a)]
Out[8]: [[1.0, 2.0, 3.0], [1.1, 2.1, 3.1], [1.2, 2.2, 3.2], [1.3, 2.3, 3.3]]

或者在numpy中使用numpy.column_stack

In [16]: import numpy as np
In [17]: np.column_stack((a, b))
Out[17]: 
array([[ 1. ,  2. ,  3. ],
       [ 1.1,  2.1,  3.1],
       [ 1.2,  2.2,  3.2],
       [ 1.3,  2.3,  3.3]])