int()参数必须是字符串或数字,而不是'generator'

时间:2016-04-27 13:46:42

标签: python class

我遇到两个错误,我认为这是因为我滥用了这些错误,但我无法弄清楚如何解决这个错误......

我明白了:

AttributeError:生物实例没有属性'remove'

int()参数必须是字符串或数字,而不是'generator'

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 [0] .vector”:列表第一个对象的向量

向量看起来像[1,0,1,1 ...]

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

您的错误是:

  1. AttributeError:生物实例没有属性'删除'
  2. 这是organisms[j].remove(organisms[j].vector[i])行 在这里,似乎organisms[j] organism没有remove()方法。您 可能 想要从organisms[j].vector[i]中移除元素organisms[j].vector

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

    1. int()参数必须是字符串或数字,而不是' generator'
    2. 这是由于行:

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

      您确定organisms[j].vector[i]是数字/字符串吗?你能尝试打印它,看看它是否确实是一个数字/字符串?

答案 1 :(得分:-1)

以下是需要注意的事项:

错误1:

生物的类型是什么[j] .vector [i]?从错误消息中,它看起来好像是一个生成器,因此没有转换为int。

错误2:

你的有机体类是什么样的?

从行:

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

我认为会导致你的第二个错误。您的Organism类没有名为'remove'的方法。