[英]changing a 3D list into a 2D list
我想將3D列表(list_1)轉換為2D列表(list_2)。 例如:
list_1: [[[3], [4]], [[5], [6]], [[7], [8]]]
list_2: [[3, 4], [5, 6], [7, 8]]
這是我已經嘗試過的:
[e for sl in lst for e in sl]
但是結果會有所不同:
[[3], [4], [5], [6], [7], [8]]
出於可讀性考慮,我建議使用itertools.chain
將此處的內部列表展平:
from itertools import chain
l = [[[3], [4]], [[5], [6]], [[7], [8]]]
[list(chain.from_iterable(i)) for i in l]
# [[3, 4], [5, 6], [7, 8]]
按照您的方法,您需要進行額外的循環以平化內部列表:
[[i for e in sl for i in e] for sl in l]
# [[3, 4], [5, 6], [7, 8]]
另外一個選項:
[reduce(list.__add__, x) for x in list_1]
您也可以這樣:
l = [[[3], [4]], [[5], [6]], [[7], [8]]]
print ([sum(item, []) for item in l])
輸出:
[[3, 4], [5, 6], [7, 8]]
您接近:
[[c for b in a for c in b] for a in lst]
如果所有嵌套列表都包含單個元素,則可以使用拆包:
d = [[[3], [4]], [[5], [6]], [[7], [8]]]
new_d = [[i for [i] in b] for b in d]
輸出:
[[3, 4], [5, 6], [7, 8]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.