如何将此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)) for i in range(len(image_list))]
  1. 我应该对第二个代码块进行哪些更改?
  2. 是否正在将第一段代码(for循环)转换为列出理解内容,从而有助于避免内核崩溃?我相信我将'image_list'中存储了如此多的图像,从而使cpu上的RAM超载-目前约为50,000,但这个数字可能会增加三倍。

预先感谢您的帮助,非常感谢。

解决方法

您的第一个代码似乎也是错误的。 您不应该调整SELECT class,message FROM my_data WHERE message LIKE '%request was made%' LIMIT 1 UNION ALL SELECT class,message FROM my_data WHERE message LIKE '%received an answer%' LIMIT 1 的大小,而应该调整image_list的大小。

对于第二段代码,

image_list[i]

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

,

当您只想一次从列表 发送一次图像时,您会将整个image_list发送到cv2.resize。

<template>
  <input
    type="text"
    @input="onChanged"
    :value="modelValue"
    :class="'input-text ' + additionalClass"
    :placeholder="placeholder" />
</template>

<script>
  // InputText.vue
  import { defineComponent } from "vue"

  export default defineComponent({
    name: 'InputText',emits: ['update:modelValue'],props: {
      modelValue: String,placeholder: {
        type: String,default: ''
      },additionalClass: {
        type: String,default: ''
      }
    },setup(props,{ emit }) {
      function onChanged(e) {
        emit('update:modelValue',e.currentTarget.value);
      }

      return {
        onChanged
      }
    }
  })
</script>