将列表元素附加到python中的列表列表

Posted

技术标签:

【中文标题】将列表元素附加到python中的列表列表【英文标题】:Append list elements to list of lists in python 【发布时间】:2017-12-18 07:37:39 【问题描述】:

鉴于以下列表:

list1 = [[1, 2],
         [3, 4],
         [5, 6],
         [7, 8]]
list2 = [10, 11, 12, 13]

更改list1 使其成为python 中的以下列表的最佳方法是什么?

[[1, 2, 10],
 [3, 4, 11],
 [5, 6, 12],
 [7, 8, 13]]

【问题讨论】:

【参考方案1】:

你可以这样做:

list1 = [[1, 2],
         [3, 4],
         [5, 6],
         [7, 8]]
list2 = [10, 11, 12, 13]

def add_item_to_list_of_lists(list11, list2):
    # list1, list to add item of the second list to
    # list2, list with items to add to the first one
    for numlist, each_list in enumerate(list1):
        each_list.append(list2[numlist])

add_item_to_list_of_lists(list1, list2)
print(list1)

输出

[[1, 2, 10], [3, 4, 11], [5, 6, 12], [7, 8, 13]]

【讨论】:

为什么要提供mutable default args?他们的内容应该是 cmets 吗? 你为什么用list1[numlist]而不是each_list【参考方案2】:

或者,如果您使用的是 Python >= 3.5,则在 ziping 之后进行解包理解:

>>> l = [[*i, j] for i,j in zip(list1, list2)]
>>> print(l)
[[1, 2, 10], [3, 4, 11], [5, 6, 12], [7, 8, 13]]

当然,如果列表大小可能不同,您最好使用zip_longest from itertools 来优雅地处理额外的元素。

【讨论】:

【参考方案3】:

你可以使用zip:

[x + [y] for x, y in zip(list1, list2)]
# [[1, 2, 10], [3, 4, 11], [5, 6, 12], [7, 8, 13]]

要修改list1,您可以:

for x, y in zip(list1, list2):
    x.append(y)

list1
# [[1, 2, 10], [3, 4, 11], [5, 6, 12], [7, 8, 13]]

【讨论】:

以上是关于将列表元素附加到python中的列表列表的主要内容,如果未能解决你的问题,请参考以下文章

附加到 Python 中的列表:每次都添加最后一个元素?

在列表中添加元素

iOS - 将元素附加到领域中的列表不会保留元素

将数据框列表附加到python中的数据框列表

我们又来了:将一个元素附加到 R 中的列表中

我们又来了:将一个元素附加到 R 中的列表中