Python 将循环的说明符转换为列表理解

Python 将循环的说明符转换为列表理解,python,python-3.x,image-processing,list-comprehension,Python,Python 3.x,Image Processing,List Comprehension,有没有办法将以下(伪)代码snipet转换为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个角对应的4个裁剪以及中心裁剪。如果不需要中心,我可以实现此列表理解版本

有没有办法将以下(伪)代码snipet转换为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个角对应的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,img0中心],[img1:00…]
。它可以通过另一个嵌套理解类型
[子列表中的子列表中的项对于子列表中的项]
展平,如下所示

[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]

仅使用内置函数、列表理解和列表添加:

[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,img0中心],[img1:00…]
。它可以通过另一个嵌套理解类型
[子列表中的子列表中的项对于子列表中的项]
展平,如下所示

[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]

在这里想要列表理解的动机是什么?我不认为你的方法有任何错误(没有正确了解上下文)。我认为这在一个单一的理解中太复杂了;可读性计数。
center\u crop
是否独立于
i
j
?@roganjosh我知道如果理解的话,它可能会变成非常不可读的代码。主要原因是好奇。@game0是的,这是独立的。在这种情况下,你可能应该站在你这边做一些尝试,并在不起作用时要求澄清。好奇的重点是为自己发现有关语言的东西。在这里想要列表理解的动机是什么?我不认为你的方法有任何错误(没有正确了解上下文)。我认为这在一个单一的理解中太复杂了;可读性计数。
center\u crop
是否独立于
i
j
?@roganjosh我知道如果理解的话,它可能会变成非常不可读的代码。主要原因是好奇。@game0是的,这是独立的。在这种情况下,你可能应该站在你这边做一些尝试,并在不起作用时要求澄清。好奇心的重点是为自己发现有关语言的东西。