Python 3.x 从列表到元组列表RGB python

Python 3.x 从列表到元组列表RGB python,python-3.x,list,rgb,Python 3.x,List,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] 转换为3对(rgb)的最佳方式是什么,内部是元组 pixel = [(255

我有一张这样的清单

[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)]

在这种情况下,使用
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)]

在这种情况下,使用
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)]

您只需使用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个元素。

您只需使用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个元素。

这是否回答了您的问题?这回答了你的问题吗?你知道哪条路更快吗?使用for循环或Iter因为我的列表会很长你知道哪种方式更快吗?使用for循环或iter因为我的列表将非常长