gpt4 book ai didi

python - 将循环转化为列表理解

转载 作者:行者123 更新时间:2023-12-01 02:51:37 25 4
gpt4 key购买 nike

我正在编写这段代码,它获取图像的所有像素,然后将它们存储到列表中。

我的目标是将这个循环转换为列表理解。

# Take the image
im = Image.open("C:/Users/admin/Desktop/IMG_170619_114715_0007_NIR.tif")
#load it
pixels = im.load()
# take the width and the height
width, height = im.size

然后是循环...

all_pixels = []
for x in range(width):
for y in range(height):
cpixel = pixels[x,y]
all_pixels.append(cpixel)

我的第一次尝试是这样的......

all_pixels=[[pixels[x,y] for y in range(height)] for x in range(width)]

它正在工作,但是当我执行 len(all_pixels) 来查看我是否拥有所有像素时,我只有 1280 个值,这意味着 lsit 理解中的计算未正确完成...

len(所有像素)
输出[143]:1280

我们应该有类似的东西..

len(所有像素)
输出[105]:1228800

请问有什么帮助吗?为什么列表理解计算的结果与循环不一样???

最佳答案

嵌套的 for 应位于父级之后:

all_pixels = [pixels[x,y] for x in range(width) for y in range(height)]

顺便说一句,您不需要索引,您可以简单地使用嵌套理解来展平图像:

all_pixels = [x for row in pixels for x in row]

图像是一个 numpy 数组,展平是实现结果的另一种方法。

all_pixels = pixels.flatten().to_list()

关于python - 将循环转化为列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44704645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com