簡體   English   中英

如何將元素附加到一對坐標以制作多維列表?

[英]How to append elements to a pair of coordinates to make a multidimensional list?

我有一個包含坐標對的列表,如下所示:

index = [(1, 4), (3, 6), (7, 10), (3, 9)]

現在我有相同大小的列表如下:

size = [2, 2, 4, 4]

現在我想將“大小”附加到“索引”以如下所示:

new = [(1,4,2), (3,6,2), (7,10,4), (3,9,4)]

我嘗試了很多東西,例如“zip”或“numpy.dstack((index, size)).shape”

但沒有給我想要的格式。

謝謝你。

您可以使用帶有zip的列表zip來聚合兩個可迭代對象,然后通過在index解包元組並將整數size添加到它來創建一個新元組:

[(*i,j) for i,j in zip(index, size)]
# [(1, 4, 2), (3, 6, 2), (7, 10, 4), (3, 9, 4)]

你可以試試這個。

[i+(j,) for i,j in zip(index,size)]
# [(1, 4, 2), (3, 6, 2), (7, 10, 4), (3, 9, 4)]

時間分析:

# When list size is 4
In [142]: timeit [(*i,j) for i,j in zip(index, size)] #yatu's answer
1.24 µs ± 72.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [144]: timeit [i+(j,) for i,j in zip(index,size)] #Ch3steR's answer
902 ns ± 28.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

當元組列表超過 10,000 時。

In [149]: timeit [(*i,j) for i,j in zip(index, size)]
1.68 ms ± 77.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [150]: timeit [i+(j,) for i,j in zip(index,size)]
1.18 ms ± 27.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

比拆包方法快一點

暫無
暫無

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

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