如何组合不同长度重复元素的列表?

Cap*_*nty 3 python list python-2.7

所以我说两个清单:

list1 = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

list2 = [4]
Run Code Online (Sandbox Code Playgroud)

我需要将它们组合起来以产生以下输出:

list3=[[1,4],[2,4],[3,4]]
Run Code Online (Sandbox Code Playgroud)

itertools似乎没有一个方法来完成这个,该zip功能在第二个列表时结束......

我确定那里有一个班轮,但是我发现这里有太多关于类似但不是同样问题的东西和谷歌.

谢谢你的帮助!

Aja*_*234 6

您可以迭代列表并连接list2当前迭代的值和元素:

list1 = [1,2,3]
list2 = [4]
new_list = [[a]+list2 for a in list1]
Run Code Online (Sandbox Code Playgroud)

输出:

[[1, 4], [2, 4], [3, 4]]
Run Code Online (Sandbox Code Playgroud)

或者,替代方案,尽管较低的解决方案使用map:

final_list = map(lambda x:[x, list2[0]], list1)
Run Code Online (Sandbox Code Playgroud)

输出:

[[1, 4], [2, 4], [3, 4]]
Run Code Online (Sandbox Code Playgroud)


Ant*_*vBR 6

您也可以使用itertools izip_longest(py2)itertools zip longest(py3):

import itertools

list(map(list,itertools.izip_longest([], list1, fillvalue=list2[0])))
Run Code Online (Sandbox Code Playgroud)

返回:

[[4, 1], [4, 2], [4, 3]]
Run Code Online (Sandbox Code Playgroud)