如何将一个列表仅包含一个项目的两个列表进行邮递



我有两个列表:

list1 = [1,2,3]

list2 = [4]

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

list3 = [[1,4],[2,4],[3,4]]

itertools似乎没有一种方法可以实现此目的,第二个列表列出时, zip函数结束。

我敢肯定那里有一个单线,但是我在这里发现了太多的东西,但在这里和Google上没有相同的问题。

您可以在列表上迭代并串联list2值和当前迭代的元素:

list1 = [1,2,3]
list2 = [4]
new_list = [[a]+list2 for a in list1]

输出:

[[1, 4], [2, 4], [3, 4]]

或一种替代方案,尽管使用map

较低的解决方案
final_list = map(lambda x:[x, list2[0]], list1)

输出:

[[1, 4], [2, 4], [3, 4]]

您可以使用itertools izip_longest(py2)或itertools zip最长(py3):

import itertools
list(map(list,itertools.izip_longest([], list1, fillvalue=list2[0])))

返回:

[[4, 1], [4, 2], [4, 3]]

您需要第三个选择吗?

>>> list(map(list,zip(list2 * len(list1), list1)))
[[4, 1], [4, 2], [4, 3]]

您也可以尝试使用itertools.cycle()

>>> import itertools    
>>> list1 = [1,2,3]
>>> list2 = [4]
>>> print([list(x) for x in zip(list1, itertools.cycle(list2))])
[[1, 4], [2, 4], [3, 4]]

您是否正在寻找类似的东西?

没有任何外部模块或重型代码:

print(list(map(lambda x:[x,list2[0]],list1)))

数据是:

list1 = [1,2,3]
list2 = [4]

输出:

[[1, 4], [2, 4], [3, 4]]

有人指出这已经给出答案,这是另一个解决方案:

list1 = [1,2,3]
list2 = [4]
print(list(zip(list1,list2*len(list1))))

输出:

[(1, 4), (2, 4), (3, 4)]

最新更新