Python .ppm文件每3个像素分开

Python .ppm文件每3个像素分开,python,python-3.x,list,image,file,Python,Python 3.x,List,Image,File,我有这个代码,它应该最终镜像ppm映像。但我面临的一个问题是,在一系列列表中,试图将每3个像素分割成它自己的括号 例如,我有一个.ppm文件: P3 44 15 000 000 000 15015 000 0157 000 000 000 000 0157 000 15015 000 000 000 我想将列表分成括号中每3个像素的列表,忽略标题: [[('0', '0', '0'), ('0', '0', '0'), ('0', '0', '0'), ('15', '0', '

我有这个代码,它应该最终镜像ppm映像。但我面临的一个问题是,在一系列列表中,试图将每3个像素分割成它自己的括号

例如,我有一个
.ppm
文件:

P3 
44 
15
000 000  000 15015 
000 0157 000 000 
000 000  0157 000 
15015 000 000 000
我想将列表分成括号中每3个像素的列表,忽略标题:

[[('0', '0', '0'), ('0', '0', '0'), ('0', '0', '0'), ('15', '0', '15')], [('0', '0', '0'), ('0', '15', '7'), ('0', '0', '0'), ('0', '0', '0')], [('0', '0', '0'), ('0', '0', '0'), ('0', '15', '7'), ('0', '0', '0')], [('15', '0', '15'), ('0', '0', '0'), ('0', '0', '0'), ('0', '0', '0')]]
到目前为止,我只能做到这一点:

[['0', '0', '0', '0', '0', '0', '0', '0', '0', '15', '0', '15'], ['0', '0', '0', '0', '15', '7', '0', '0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0', '0', '0', '15', '7', '0', '0', '0'], ['15', '0', '15', '0', '0', '0', '0', '0', '0', '0', '0', '0']]
如何将列表中的每三个整数分开

代码:


由于您已将所需的数据很好地放入
列表中
,因此以下操作应该有效:

#convert each list in lists to lists of 3-tuples
target = []
for list in lists:
    target.append([tuple(list[i:i+3]) for i in range(0,len(list),3)])

print(target) #target list with lists of 3-tuples

非常感谢,先生,这意味着很多,没问题。您是如何得到结果的?似乎当我试图在我的机器上实现您的代码时,您在这里发布的
列表与我得到的列表不同。使用
.split()
函数似乎创建了列表列表,因为它是通过
\n
分隔列表的。顺便说一句,您的PPM文件不正确。第三行后应插入255个字符。每个像素的R、G和B分量应该用空格分隔。@MarkSetchell这是我第一次处理PPM文件,所以我不知道如何正确地处理它。我就是这样得到文件的。只有3行的标题后面跟着像素,看看这里。。。请注意,ImageMagick、Photoshop、GIMP、feh、eog和许多其他工具可以理解、生成和显示PPM文件。
#convert each list in lists to lists of 3-tuples
target = []
for list in lists:
    target.append([tuple(list[i:i+3]) for i in range(0,len(list),3)])

print(target) #target list with lists of 3-tuples