簡體   English   中英

int() 參數必須是字符串或數字,而不是“生成器”

[英]int() argument must be a string or a number, not 'generator'

我遇到了兩個錯誤,我認為這是由於我對類的濫用,但我不知道如何解決這個問題......

我得到:

AttributeError:有機體實例沒有屬性“刪除”

或者

int() 參數必須是字符串或數字,而不是“生成器”

def filtre_vecteurs(organisms):
  nb_organisms = len(organisms)
  vector_size = len(organisms[0].vector)
  for i in range(vector_size):
    tmp = 0
    for j in range(nb_organisms):
        organisms[j].vector[i] = int(organisms[j].vector[i])
        tmp += organisms[j].vector[i]
    if tmp == nb_organisms :
       for j in range(0, nb_organisms):
           organisms[j].remove(organisms[j].vector[i])
return organisms

“organisms”是一個對象列表

"organisms[0].vector" : 列表第一個對象的向量

一個向量看起來像這樣 [1,0,1,1...]

非常感謝你的幫助 !

你的錯誤是:

  1. AttributeError:有機體實例沒有屬性“移除”

這符合organisms[j].remove(organisms[j].vector[i])在這里,似乎organisms[j]其是organism還沒有remove()方法。 可能想從organisms[j].vector刪除元素organisms[j].vector[i]

organisms[j].vector.remove(organisms[j].vector[i])

  1. int() 參數必須是字符串或數字,而不是“生成器”

這是由於行:

organisms[j].vector[i] = int(organisms[j].vector[i])

您確定organisms[j].vector[i]是數字/字符串嗎?。 您可以嘗試打印它並查看它是否確實是數字/字符串嗎?

以下是需要注意的事項:

錯誤 1:

生物體[j].vector[i]的類型是什么? 從錯誤消息來看,它似乎是一個生成器,因此沒有轉換為 int。

錯誤 2:

你的有機體類是什么樣的?

從行:

 organisms[j].remove(organisms[j].vector[i])

我認為這會導致您的第二個錯誤。 您的 Organism 類沒有名為“remove”的方法。

暫無
暫無

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

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