Skip to main content
 首页 » 编程设计

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

2025年05月04日11yjmyzz

我有一个代表具有以下结构的 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]]] 

现在我想把每个line-item的pix-lists转换成元组,所以内容会变成这样:

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