元组列表列表RGB python

问题描述 投票:1回答:3

我有这样的列表

[255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 127, 0, 255, 127, 0, 255, 127, 0, 255, 127, 0, 255, 127, 0, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255]

什么是转换成3对(rgb)的最佳方法,里面是元组

pixel = [(255,0,0),(255,0,0),(255,0,0),(255,0,0),(127,0,255),(127,0,255),(127,0,255),(127,0,255),(127,0,255),(0,127,255),(0,127,255),(0,127,255),(0,127,255),(0,127,255),(0,127,255),(0,127,255)]
python-3.x list rgb
3个回答
5
投票

您可以简单地使用iter()如下:

RGB = [255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 127, 0, 255, 127, 0, 255, 127, 0, 255, 127, 0, 255, 127, 0, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255]
it = iter(RGB)
print(list(zip(it,it,it)))

如果要在元组中包含N个元素,则只需使用zip(it * N),您将在元组中获得N个元素。


1
投票

在这种情况下,使用numpy非常容易:

import numpy as np
pixels = [255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 127, 0, 255, 127, 0, 255, 127, 0, 255, 127, 0, 255, 127, 0, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255, 0, 127, 255]
np_pixels = np.array(pixels).reshape((-1, 3))
print(np_pixels)

输出:

>>> print(np_pixels)
[[255   0   0]
 [255   0   0]
 [255   0   0]
 [255   0   0]
 [127   0 255]
 [127   0 255]
 [127   0 255]
 [127   0 255]
 [127   0 255]
 [  0 127 255]
 [  0 127 255]
 [  0 127 255]
 [  0 127 255]
 [  0 127 255]
 [  0 127 255]
 [  0 127 255]]

如果您坚持要使它们成为元组,则可以随后执行此操作:

np_pixels = [tuple(row) for row in np_pixels]

输出:

[(255, 0, 0), (255, 0, 0), (255, 0, 0), (255, 0, 0), (127, 0, 255), (127, 0, 255), (127, 0, 255), (127, 0, 255), (127, 0, 255), (0, 127, 255), (0, 127, 255), (0, 127, 255), (0, 127, 255), (0, 127, 255), (0, 127, 255), (0, 127, 255)]

-1
投票

尝试使用列表理解:

print([l[i:i + 3] for i in range(0, len(l), 3)])
© www.soinside.com 2019 - 2024. All rights reserved.