python - 如何将此 for 循环转换为 Python 列表理解?
问题描述
我的问题是两个部分,但首先是一些背景。
我正在尝试遍历图像列表,并基本上使用 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))]
- 我应该对第二个代码块进行哪些更改?
- 将第一个代码块(for循环)转换为列表理解是否有助于避免我的内核崩溃?我相信我在“image_list”中存储了如此多的图像,从而使 CPU 上的 RAM 过载——目前约为 50,000,但这个数字可能会增加三倍。
提前感谢您的帮助,非常感谢。
解决方案
您的第一个代码似乎也错误。你不应该调整大小image_list
,你应该调整大小image_list[i]
。
对于第二个代码块,
image_list2 = [cv2.resize(image, (200,200)) for image in image_list]
我不太确定列表理解是否会解决您的问题。每次迭代都将新调整大小的图像保存在文件中并稍后加载如何?
推荐阅读
- nginx-config - 如何将 nginx 配置为使用 2 个 docroot(具有不同的主机名)和 ddev
- java - 在java中的字符串中替换空括号
- javascript - 将溢出的内容从一个 div 转移到另一个
- python - 如何从 DataFrame,Python-3 中找到前 N 个最小值
- java - 需要更换
你是?[xxxrecipientFirstNamexxx]
和你是?{recipientFirstName}
- javascript - 单个字符串到数组 JavaScript
- multithreading - 多核多线程能否避免缓存未命中
- java - Spring Boot 插件需要 Gradle 4.10 或更高版本。当前版本是 Gradle 4.1
- java-8 - 杰克逊 - LocalDateTime 格式
- python - open3D中的RGB颜色问题