如何将此 for 循环转换为 Python 列表理解?

How to convert this for loop to a Python list comprehension?

我的问题分为两部分,但首先是一些背景知识。

我正在尝试遍历图像列表并基本上使用 cv2.resize 标准化每个图像的大小。我用下面的 for 循环成功地做到了这一点,但是图像的数量增加了,并将继续这样做,导致我的内核崩溃。我已经在 Spyder (Python 3.7) 和 Jupyter Notebook 中尝试了 运行 这段代码,但无济于事。

for i in range(len(image_list)):
    image_list[i] = cv2.resize(image_list[i], (200,200))

列表理解对我来说不是很直观;但是,我尝试转换上面的代码但没有成功。这是我的尝试:

image_list2 = [cv2.resize(image_list, (200,200)) for i in range(len(image_list))]
  1. 我应该对第二个代码块做哪些修改?
  2. 将第一个代码块(for 循环)转换为列表理解是否有助于避免我的内核崩溃?我认为 'image_list' 中存储了如此多的图像,我的 CPU 上的 RAM 超载了 - 目前约为 50,000,但这个数字可能会增加三倍。

提前感谢您的帮助,非常感谢。

你的第一个代码似乎也是错误的。 你不应该调整 image_list,你应该调整 image_list[i].

对于第二个代码块,

image_list2 = [cv2.resize(image, (200,200)) for image in image_list]

我不太确定列表推导是否能解决您的问题。如何在每次迭代时将新调整大小的图像保存在文件中并稍后加载?

您要将整个 image_list 发送到 cv2.resize,而您一次只想发送 列表中的一张图像。

for i in range(len(image_list)):
    image_list[i] = cv2.resize(image_list[i], (200,200))