[英]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.