-1

下面的列表是 ppm 文件的一部分。这三个数字是红绿蓝。下面的列表是更大列表名称 num 的一部分

num=list below  
    [..... [155, 155, 155],...[100, 100, 100]...
    [222, 222, 222]....] 

for pixels in num:
     for rgb in pixels:
          print([255 - rgb for rbg in pixels])

运行此代码时,您会得到

[100, 100, 100]
[100, 100, 100]
[100, 100, 100]
[33, 33, 33]
[33, 33, 33]
[33, 33, 33]

如何得到所以它只打印一个而不是三个相同的。

[100, 100, 100]
[33, 33, 33]
4

2 回答 2

1

删除你的内部 for 循环

>>> nums = [[155, 155, 155],
...         [222, 222, 222]]

>>> for pixels in nums:
...    print([255 - rgb for rgb in pixels])

>>> [100, 100, 100]
>>> [33, 33, 33]

编辑:要将prints 输出到文件:

f = open('path/to/file', 'w')
for pixels in nums:
    f.write(', '.join(str(255 - rgb) for rgb in pixels) +'\n')
f.close()
于 2012-10-18T02:55:55.523 回答
1

从外观上看,您有一个不需要的循环:

for pixels in num:
     for rgb in pixels:
          print([255 - rgb for rgb in pixels])

应该:

for pixels in num:
      print([255 - rgb for rgb in pixels])

否则,您将为每个像素打印列表理解 3 次,为该像素中的每个元素打印一次。

于 2012-10-18T02:56:31.440 回答