在python中将子列表更改为元组
我有一个变量,表示具有以下结构的bmp图像:在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)]
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密集型操作,无法更快地执行