簡體   English   中英

如何在python中按順序附加兩個列表?

[英]How can I append two lists in sequential order in python?

我有一個坐標列表和另一個高度值列表。 如何按順序將高度值附加到坐標列表?

coor = [[[83.75, 18.70], [57.50, 18.70], [57.5, 2.87], [83.75, 4.18]],
   [[83.75, 34.54], [110.0, 35.0], [104.86, 19.59], [83.75, 19.59]],
   [[104.86, 19.59], [83.75, 19.59], [83.75, 4.18], [100.0, 5.0]],
   [[-5.0, 33.0], [18.12, 33.40],[18.12, 16.70],[-2.53, 16.70]], 
   [[18.12, 16.70],[-2.53, 16.70], [0.0, 0.0],[18.12, 0.90]]]
height = [5,4,5,6,6]

預期結果:

result = [[[83.75, 18.70], [57.50, 18.70], [57.5, 2.87], [83.75, 4.18],5],
   [[83.75, 34.54], [110.0, 35.0], [104.86, 19.59], [83.75, 19.59],4],
   [[104.86, 19.59], [83.75, 19.59], [83.75, 4.18], [100.0, 5.0],5],
   [[-5.0, 33.0], [18.12, 33.40],[18.12, 16.70],[-2.53, 16.70],6], 
   [[18.12, 16.70],[-2.53, 16.70], [0.0, 0.0],[18.12, 0.90],6]]

如果你不介意元組,你可以使用zip

> list(zip(coor, height))

[([[83.75, 18.7], [57.5, 18.7], [57.5, 2.87], [83.75, 4.18]], 5),
 ([[83.75, 34.54], [110.0, 35.0], [104.86, 19.59], [83.75, 19.59]], 4),
 ...

如果它必須是一個列表,請在理解中使用zip

> [list(pair) for pair in zip(coor, height)]

[[[83.75, 18.7], [57.5, 18.7], [57.5, 2.87], [83.75, 4.18]], 5],
[[[83.75, 34.54], [110.0, 35.0], [104.86, 19.59], [83.75, 19.59]], 4],
...

tldr:一行解決方案,壓縮可迭代對象( Python 文檔)並在下面列出所需的輸出說明:

[list(item) for item in list(zip(coor,height))]

解釋:

list1 = [ 
    [['a','a'],['aa','aa']], 
     [['b','b'],['bb','bb']]]
list2 = [1,2]

for item in list(zip(list1,list2)): 
    print('zip output', item) 
    print('desired output', list(item)) 

輸出:

zip output ([['a', 'a'], ['aa', 'aa']], 1)
desired output [[['a', 'a'], ['aa', 'aa']], 1]
zip output ([['b', 'b'], ['bb', 'bb']], 2)
desired output [[['b', 'b'], ['bb', 'bb']], 2]

作為一行列表理解:

[list(item) for item in list(zip(list1,list2))]

輸出:

[[[['a', 'a'], ['aa', 'aa']], 1], [[['b', 'b'], ['bb', 'bb']], 2]]

暫無
暫無

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

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