作爲輸入,我收到由表示多邊形和多面幾何的x和y座標組成的列表的兩種列表。事實上,輸入在GeoJson standardPython - 在一個函數中展平兩種不同類型的列表
list1
表示表示一個簡單的多邊形幾何形狀的座標和list2
表示MULTIPOLYGON幾何:
list1 = [[[0 , 0], [0, 1], [0 ,2]]]
list2 = [[[[0, 0] , [0, 1], [0, 2]], [[1, 0], [1, 1], [1 ,2]]]]
組合區幾何形狀(list2
)由列表的列表更深一層表示比簡單的多邊形幾何(list1
)。
我想拉平這些名單,以便讓那些輸出:
if input is list1 type : list1_out = [[0, 0, 0, 1, 0, 2]]
if input is list2 type : list2_out = [[0, 0, 0, 1, 0, 2], [1, 0, 1, 1, 1, 2]]
我使用下面的代碼,通常被用來壓平列表,其中input
可以是兩種類型的列表:
[coords for polygon in input for coords in polygon]
通過以上這種代碼,輸出爲list1
是正確的,但的list2
輸出如下:
[[[0, 0] ,[0, 1], [0, 2]], [1, 0], [1, 1], [1, 2]]]
是否有一個函數可以將這兩種類型的列表深度扁平化以獲得預期的輸出結果?
編輯:性能真正的問題在這裏的列表是真正的大
編輯2:我可以if語句使用每種類型的列表
所以,你要只扁平化最內部的名單?此外,它是否需要自動檢測它是什麼樣的列表? –
是的,這是一個很好的總結! –
'list2'的結果不應該是'[[[0,0,0,1,0,2],[1,0,1,1,1,2]]]'? (又一個級別的'[]') –