如何使用List Comprehensions实现以下代码?

时间:2018-04-16 12:35:53

标签: python list-comprehension

如何使用List Comprehensions实现以下代码?

for r in range(row):
    for c in range(column):
        print [r,c]

THX

2 个答案:

答案 0 :(得分:0)

找到它:

[[print([r,c]) for c in range(column)] for r in range(row)]

谢谢mgilson。没有喝足够的咖啡,忘了怎么说'嵌套'#39;用英语和我的母语:)

<强>更新 我会坚持使用DavidG的解决方案:

 [ax.axis('off') for ax in axes.flatten()]

对于此解决方案,我可以减少以下代码:

# Plot the result
row, column = [3, 2]
figure, axes = plt.subplots(row, column, figsize=(15, 10))
figure.tight_layout()

axes[0,0].imshow(image)
axes[0,0].set_title('Original Image', fontsize=15)
axes[0,0].axis('off')

axes[0,1].imshow(img_solution, cmap='gray')
axes[0,1].set_title('Expected result', fontsize=15)
axes[0,1].axis('off')

axes[1,0].imshow(gradx, cmap='gray')
axes[1,0].set_title('gradx', fontsize=15)
axes[1,0].axis('off')

axes[1,1].imshow(grady, cmap='gray')
axes[1,1].set_title('grady', fontsize=15)
axes[1,1].axis('off')

axes[2,0].imshow(mag_binary, cmap='gray')
axes[2,0].set_title('mag_binary', fontsize=15)
axes[2,0].axis('off')

axes[2,1].imshow(dir_binary, cmap='gray')
axes[2,1].set_title('dir_binary', fontsize=15)
axes[2,1].axis('off')

通过这几行:

# Plot the result
row, column = [3, 2]
figure, axes = plt.subplots(row, column, figsize=(15, 10))
figure.tight_layout()
list_title_image = [['Original Image',image],
                    ['Expected result', img_solution],
                    ['gradx', gradx],
                    ['grady', grady],
                    ['mag_binary', mag_binary],
                    ['dir_binary', dir_binary] ]

plot_it = [ ( ax.imshow(img[1], cmap='gray'), ax.set_title(img[0], fontsize=15), ax.axis('off') ) 
            for ax, img in zip(axes.flatten(), list_title_image)]

ax.axis(&#39; off&#39;)是matplotlib子图的数组

答案 1 :(得分:0)

我可能不会使用评论中的列表理解建议,因为这确实会填充其他人指出的None列表。

在你提供的答案中看到额外的代码表明for循环可能是要走的路,并且很多更具可读性IMO:

所以替换你的列表理解:

plot_it = [ ( ax.imshow(img[1], cmap='gray'), ax.set_title(img[0], fontsize=15), ax.axis('off') )
            for ax, img in zip(axes.flatten(), list_title_image)]

使用:

for ax, img in zip(axes.flatten(), list_title_image):
    ax.imshow(img[1], cmap='gray')
    ax.set_title(img[0], fontsize=15)
    ax.axis('off')