Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将子列表更改为元组_Python_List_Python 2.7_Tuples - Fatal编程技术网

在python中将子列表更改为元组

在python中将子列表更改为元组,python,list,python-2.7,tuples,Python,List,Python 2.7,Tuples,我有一个变量,表示具有以下结构的bmp图像: image=[line1, line2, ... linen] line=[pix1,pix2,...,pixn] pix=[r,g,b] 例如,这个变量的内容可能如下 [[[0,0,0],[1,0,1],[2,4,5]],[[3,4,5],[1,7,4],[1,3,5]],[[2,4,2],[1,6,7],[1,9,0]]] 现在我想将每个行项目的pix列表转换为元组,因此内容将如下所示: [[(0,0,0),(1,0,1),(2,4,5)]

我有一个变量,表示具有以下结构的bmp图像:

image=[line1, line2, ... linen] 
line=[pix1,pix2,...,pixn]
pix=[r,g,b]
例如,这个变量的内容可能如下

[[[0,0,0],[1,0,1],[2,4,5]],[[3,4,5],[1,7,4],[1,3,5]],[[2,4,2],[1,6,7],[1,9,0]]]
现在我想将每个行项目的pix列表转换为元组,因此内容将如下所示:

[[(0,0,0),(1,0,1),(2,4,5)],[(3,4,5),(1,7,4),(1,3,5)],[(2,4,2),(1,6,7),(1,9,0)]]
我可以自己做

for i in range(0,len(image)-1):
   for j in range(0,len(image[0])-1):
      image[i][j] = tuple(image[i][j])
但这似乎不是最“pythonesque”的方法,我需要尽可能快的计算方法,而上述方法似乎远远不够

我试过了

[tuple(pix) for pix in line for line in image]
我认为这应该更快一些,但当然上述方法失败得很惨

那么有没有人能帮助我以最快的方式将我的pix子列表转换成元组呢?提前谢谢

这个怎么样:

[map(tuple, line) for line in image]
并包含完整性评论。在Python 3.x中,map是一个生成器,您将使用:

[list(map(tuple, line)) for line in image]
这个怎么样:

[map(tuple, line) for line in image]
并包含完整性评论。在Python 3.x中,map是一个生成器,您将使用:

[list(map(tuple, line)) for line in image]

我认为应该是
map(tuple,line)
+1,您可能还想注意,在Python3.x上,
map()
是一个生成器,所以您可能希望
list(map(…)
@F.J-我想到了这一点,但因为它是专门针对2.7的,所以我认为它是可以的。谢谢大家,这些回复来得太快了!!这是一个比我想出的更优雅的解决方案。遗憾的是,对于1024x768的bmp(在我的3ghz C2D四元组上大约800毫秒),它不一定更快,但我想这只是一个真正的cpu密集型操作,无法快速执行。我认为应该是
map(tuple,line)
+1,您可能还想注意,在Python3.x上,
map()
是一个生成器,所以你会想要
列表(map(…)
@F.J-我想到了,但因为它是专门为2.7版设计的,所以我觉得还可以。谢谢大家,这些回复来得太快了!!这是一个比我想出的更优雅的解决方案。可悲的是,对于1024x768的bmp(在我的3ghz C2D四元组上大约800毫秒),它不一定更快,但我想这只是涉及到一个真正的cpu密集型操作,无法更快地执行