我有兩個二維列表,例如:a = [[1, 2], [3, 4]]
b = [[5, 6], [7, 8]]那么我怎樣才能得到一個二維元組列表:[[(1,5),(2,6)],[(3,7),(4,8)]]?
2 回答

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
我看到你已經回答了你自己的問題,如下:
[[(i1,j1) for i1, j1 in zip(i, j)] for i, j in zip(a, b)]
然而,存在一種簡化的形式,沿著類似的路線,但直接使用元組,而不是將它們解壓到多個變量中——第一個列表理解也可以通過調用以下的輸出來list替換zip:
[list(zip(*t)) for t in zip(a,b)]
或者:
vars = (a, b)
[list(zip(*t)) for t in zip(*vars)]
除了稍微簡單一點之外,這樣做的優點是更容易推廣到更多變量,例如,如果您有:
a = [[1, 2], [3, 4]]
b = [[5, 6], [7, 8]]
c = [[9, 10], [11, 12]]
然后你可以這樣做:
vars = (a, b, c)
[list(zip(*t)) for t in zip(*vars)]
為你帶來:
[[(1, 5, 9), (2, 6, 10)], [(3, 7, 11), (4, 8, 12)]]
添加回答
舉報
0/150
提交
取消