压缩嵌套列表

时间:2019-07-09 06:18:54

标签: python list tuples

我正在尝试,但是无法以特定方式压缩以下2个列表。

list1=[(1,2,3),(4,5,6),(7,8,9)]
list2=[10,11,12]
zippedlist=[(1,2,3,10),(4,5,6,11),(7,8,9,12)]

最初,我认为打开list1的包装并运行zip(*list1,list2)可以完成这项工作,但现在我知道这行不通了。

我怀疑可以使用带有zip函数的一个或多个for循环来完成此操作,但是我不太确定这是如何工作的。关于如何进行的任何建议?

4 个答案:

答案 0 :(得分:3)

使用zip

例如:

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

result = [tuple(list(i) + [v]) for i, v in zip(list1, list2)]
print(result)

输出:

[(1, 2, 3, 10), (4, 5, 6, 11), (7, 8, 9, 12)]

答案 1 :(得分:3)

您也可以使用map

list(map(lambda x, y: x +(y,), list1, list2))
# [(1, 2, 3, 10), (4, 5, 6, 11), (7, 8, 9, 12)]

答案 2 :(得分:1)

更容易理解的是散布元组并加入列表2,然后再次将其转换为元组。

result = list(map(lambda x, y: (*x, y) , list1, list2))

结果= [(1、2、3、10),(4、5、6、11),(7、8、9、12)]

答案 3 :(得分:1)

或者在列表理解中直接使用+运算符:

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

new_list = [i+(v,) for i,v in zip(list1,list2)]

#[(1, 2, 3, 10), (4, 5, 6, 11), (7, 8, 9, 12)]