l1 = [1, 2, 3, 4]
l2 = [(10, 20), (30, 40), (50, 60), (70, 80)]
>>> print(list(zip(l1, l2)))
[(1, (10, 20)), (2, (30, 40)), (3, (50, 60)), (4, (70, 80))]
Run Code Online (Sandbox Code Playgroud)
但是,我希望它只是一个包含四个元组的列表:
[(1, 10, 20), (2, 30, 40), (3, 50, 60), (4, 70, 80)]
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
>>> print(list(zip(l1, *l2)))
[(1, 10, 30, 50, 70), (2, 20, 40, 60, 80)]
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
如何使用元组列表或列表列表压缩列表?
解决此问题的一种更通用的方法是考虑将这两个列表按比例放大/缩小到相同的维度.
>>> [(a, ) + b for a, b in zip(l1, l2)]
[(1, 10, 20), (2, 30, 40), (3, 50, 60), (4, 70, 80)]
Run Code Online (Sandbox Code Playgroud)
如您的示例所示,第二个列表与第一个列表相比具有额外的维度
在这种特殊情况下,第一种方法更容易,因此是明显的选择