簡體   English   中英

如何從python中的兩個二維列表創建元組的二維列表?

[英]How to create 2-D lists of tuples from two 2-D lists in python?

我有兩個二維列表,例如:

a = [[1, 2], [3, 4]]
b = [[5, 6], [7, 8]]

那么我怎樣才能得到一個二維元組列表:[[(1,5), (2,6)], [(3,7), (4,8)]]?

我看到你已經回答了你自己的問題,如下:

[[(i1,j1) for i1, j1 in zip(i, j)] for i, j in zip(a, b)]

然而,存在一種簡化的形式,沿着類似的路線,但直接使用元組而不是將它們解包成多個變量——第一個列表理解也可以通過在zip的輸出上調用list來替換:

[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)]]

我使用了這個代碼:

data = [[(i1,j1) for i1, j1 in zip(i, j)] for i, j in zip(a, b)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM