python将数据映射到列表/元组列表

python将数据映射到列表/元组列表,python,list,numpy,list-comprehension,Python,List,Numpy,List Comprehension,我有一个3D点列表,我正试图将其映射到如下列表: plot = map(lambda x: (x[0], x[1], x[2], voxelGrid[x]), data) 那不是我想要的。 其目的是plot[0]保存第一个数据索引中的所有值,plot[1]保存第二个索引中的所有值,依此类推 通过对我试图分组的每个不同值执行列表理解,我可以有效地做到这一点,但我觉得有更好的方法 数据 data = [(35, 35, 32), (35, 36, 33), (35, 38, 34)...] # x

我有一个3D点列表,我正试图将其映射到如下列表:

plot = map(lambda x: (x[0], x[1], x[2], voxelGrid[x]), data)
那不是我想要的。 其目的是
plot[0]
保存第一个数据索引中的所有值,
plot[1]
保存第二个索引中的所有值,依此类推

通过对我试图分组的每个不同值执行列表理解,我可以有效地做到这一点,但我觉得有更好的方法

数据

data = [(35, 35, 32), (35, 36, 33), (35, 38, 34)...] # xyz points
体素栅格是一个3D numpy数组,在上面的每个点上都包含一个值

我正在尝试获得以下输出:

plot=[(35,35,35),(35,36,38),(32,33,34),(体素网格[第一点]、体素网格[第二点]、体素网格[第三点]])
你想要这样吗

>>> data = [(35, 35, 32), (35, 36, 33), (35, 38, 34)]
>>> zip(*data)
[(35, 35, 35), (35, 36, 38), (32, 33, 34)]
zip(*)
tuple()和生成器表达式一起使用:

zip(*data) + [tuple(voxelGrid[x] for x in data)]

plot=zip(*data)
可能是。我还在尝试添加第四个元素,它是
xyz
位置的强度值。您是否使用NumPy?请提供一些样本数据和预期输出。
zip(*data) + [tuple(voxelGrid[x] for x in data)]