python 将数据映射到 lists/tuples 的列表
python map data to list of lists/tuples
我有一个 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
voxelGrid 是一个 3D numpy 数组,在上面的每个点都包含一个值。
我正在尝试获取此输出:
plot = [(35,35,35),(35,36,38), (32,33,34), (voxelGrid[first point], voxelGrid[second point], voxelGrid[third point])]
你想要这样吗??
>>> data = [(35, 35, 32), (35, 36, 33), (35, 38, 34)]
>>> zip(*data)
[(35, 35, 35), (35, 36, 38), (32, 33, 34)]
plot = zip(*[(x[0], x[1], x[2], voxelGrid[x]) for x in data])
将 zip(*)
与 tuple()
和生成器表达式一起使用:
zip(*data) + [tuple(voxelGrid[x] for x in data)]
我有一个 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
voxelGrid 是一个 3D numpy 数组,在上面的每个点都包含一个值。
我正在尝试获取此输出:
plot = [(35,35,35),(35,36,38), (32,33,34), (voxelGrid[first point], voxelGrid[second point], voxelGrid[third point])]
你想要这样吗??
>>> data = [(35, 35, 32), (35, 36, 33), (35, 38, 34)]
>>> zip(*data)
[(35, 35, 35), (35, 36, 38), (32, 33, 34)]
plot = zip(*[(x[0], x[1], x[2], voxelGrid[x]) for x in data])
将 zip(*)
与 tuple()
和生成器表达式一起使用:
zip(*data) + [tuple(voxelGrid[x] for x in data)]