在python中使用2d列表压缩列表

在python中使用2d列表压缩列表,python,Python,我有一份清单和一份清单。我想压缩它们并在元组上运行一个循环 例如: list1 = [1, 2, 3, 4] list2 = [[11, 12], [21, 22], [31, 32], [41, 42]] 我希望得到以下输出,并通过每个元组运行一个循环 output = [(1, 11), (1, 12), (2, 21), (2, 22), (3, 31), ... ...] 我试着做下面的事情,但没有成功 for candidate, reference in zip(list1, z

我有一份清单和一份清单。我想压缩它们并在元组上运行一个循环

例如:

list1 = [1, 2, 3, 4]
list2 = [[11, 12], [21, 22], [31, 32], [41, 42]]
我希望得到以下输出,并通过每个元组运行一个循环

output = [(1, 11), (1, 12), (2, 21), (2, 22), (3, 31), ... ...]
我试着做下面的事情,但没有成功

for candidate, reference in zip(list1, zip(*list2)):
    print(candidate, reference)

这是一个单循环的解决方案,但对我来说,这似乎是一个微观优化

>>> list1 = [1, 2, 3, 4]
>>> list2 = [[11, 12], [21, 22], [31, 32], [41, 42]]
>>> output = []
>>> for x, (a,b)  in zip(list1, list2):
...     output.append((x,a))
...     output.append((x,b))
...
>>> output
[(1, 11), (1, 12), (2, 21), (2, 22), (3, 31), (3, 32), (4, 41), (4, 42)]
>>>

[(x,z)表示zip中的x,y(列表1,列表2)表示y中的z]
您尝试过的方法无效吗?我可以只使用一个循环吗?@WasiAhmad您能保证元组的大小吗?因为那样你就可以了。
list1
list2
大小是可变的。你所说的元组大小是什么意思?元组总是两个数字。谢谢你的帮助,但实际上这不符合我的目的。如果列表2看起来像-
list2=[[11,12,13],[21,22,23],[31,32,33],[41,42,43],
?@WasiAhmad这正是我之前想问的,我忘了你有子列表而不是元组。关于子列表的大小,你有什么保证吗?@WasiAhmad那么最明智的方法是使用python中的“平面映射”习惯用法:
[(x,e)表示zip中的x,y(list1,list2)表示y中的e]