簡體   English   中英

如何將此 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM