我正在尝试,但是无法以特定方式压缩以下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循环来完成此操作,但是我不太确定这是如何工作的。关于如何进行的任何建议?
答案 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)]