繁体   English   中英

如何在循环内限制列表理解的重复?

[英]How to limit the list comprehension from repeating when inside a loop?

下面的列表是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]

删除内部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]

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

f = open('path/to/file', 'w')
for pixels in nums:
    f.write(', '.join(str(255 - rgb) for rgb in pixels) +'\n')
f.close()

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

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次列表理解,对于该像素中的每个元素打印一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM