繁体   English   中英

将specif for loop转换为列表理解

[英]Transform specif for loop into list comprehension

有没有办法将以下(伪)代码片段转换为python列表理解?

for img in imgs:
    for i in range(2):
       for j in range(2):
           final_img.append(correspondent_corner(img, i,j))
    final_img.append(center_crop(img))

该代码的目的是提取对应于图像的四个角和中心作物的4个作物。 在不需要中心的情况下,我可以实现此列表理解的版本,但无法解决这种情况。

仅使用内置函数,列表推导和列表添加:

[item for sublist in [[correspondent_corner(img, i,j) for i in range(2) for j in range(2)] + [center_crop(img)] for img in range(5)] for item in sublist]

我是通过使用嵌套列表推导来完成内部循环的:

...[correspondent_corner(img, i,j) for i in range(2) for j in range(2)]...

然后将该结果附加到仅包含中心作物的列表中:

[[correspondent_corner(img, i,j) for i in range(2) for j in range(2)] + [center_crop(img)] for img in range(5)]

这给出了每个图像结果的嵌套列表,看起来像[[img0:00,img0:01,img0:10,img0:11,img0center],[img1:00...]] 它可与所述类型的另一个嵌套理解被展平[item for sublist in list for item in sublist] ,它看起来像

[item for sublist in [[correspondent_corner(img, i,j) for i in range(2) for j in range(2)] + [center_crop(img)] for img in range(5)] for item in sublist]

暂无
暂无

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

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