首页 > 解决方案 > 访问嵌入列表的相同索引

问题描述

我有一个编码如下的图像:image[RGBchannel][y][x]

我想访问RGBchannel每个索引的三元组。这是我目前正在使用的方法。有没有更有效的写法?

image = [[[1, 2, 3], [4,5,6]], [[7,8,9], [10, 11, 12]], [[13,14,15], [16,17,18]]]

for y in range(len(image[0]):
    for x in range(len(image[0][0]):
        rgb = []
        for channel in range(len(image)):
            rgb.append(image[channel][y][x])
        print rgb

输出是:

[1, 7, 13]
[2, 8, 14]
[3, 9, 15]
[4, 10, 16]
[5, 11, 17]
[6, 12, 18]

在不导入任何 3rd 方库或导入任何内部模块的情况下,有没有更好的方法来做到这一点?

标签: python

解决方案


那这个呢:

image = [[[1, 2, 3], [4,5,6]], [[7,8,9], [10, 11, 12]], [[13,14,15], [16,17,18]]]
result = [x for z in zip(*image) for x in zip(*z)]
print(result)

输出:

[(1, 7, 13), (2, 8, 14), (3, 9, 15), (4, 10, 16), (5, 11, 17), (6, 12, 18)]

推荐阅读