AttributeError:'int'对象没有属性'insert'

时间:2012-07-25 01:41:32

标签: python insert attributeerror

HELP!就在我开始工作的时候,别的什么都行不通!再一次,我确信经验丰富的眼睛很简单,但我很挣扎!这是我生成列表和所述列表数据的代码。

#Frame Creation


allframes = []

for n in range (0, (workingframes*archnodes*3)):
    allframes.append(n)

frames = allframes

print frames



#Frame Population

for f in range (0, workingframes):

    if f<=(workingframes/2):

        for x in range (0, (archnodes)):
            frames[((archnodes*3)+f)].insert(((archnodes*3)+f), (archstartred[x]))
            frames[((archnodes*3)+f+workingframes)].insert(((archnodes*3)+f+workingframes),(archstartgrn[x]))
            frames[((archnodes*3)+f+workingframes*2)].insert(((archnodes*3)+f+workingframes*2),(archstartblu[x]))

        for y in range (0, nodesperframe):
            archstartred.pop()
            archstartgrn.pop()
            archstartblu.pop()
            archstartred.insert(0, backred)
            archstartgrn.insert(0, backgrn)
            archstartblu.insert(0, backblu)

    else:
        for y in range (0, nodesperframe):
            archstartred.pop(0)
            archstartgrn.pop(0)
            archstartblu.pop(0)
            archstartred.append(backred)
            archstartgrn.append(backgrn)
            archstartblu.append(backblu)

        for x in range (0, (archnodes)):
            frames[(archnodes*3)+f].insert((archnodes*3), (archstartred[x]))
            frames[(archnodes*3)+f+workingframes].insert(((archnodes*3)+1),(archstartgrn[x]))
            frames[(archnodes*3)+f+workingframes*2].insert(((archnodes*3)+2),(archstartblu[x]))

我一直得到这个可爱的错误:

AttributeError: 'int' object has no attribute 'insert'

我计划在填充列表后将列表转换为数组,以便我可以按照需要的方式对其进行操作。我确信有一种更简单的方法可以做到这一点,但我不知道,我是Python的新手!

2 个答案:

答案 0 :(得分:5)

这些表达式frames[((archnodes*3)+f)](所有3个版本)评估为整数,并且您尝试在它们上调用insert()方法,这是导致错误的原因。

f是在封闭for循环中创建的整数,并且在第一个for循环中使用archnodes的方式也意味着它们是数字。 frames是在第一个循环中创建的数字列表,因此您将索引到数字列表,然后尝试在列表中的特定数字上调用insert()方法。如错误消息所示,

'int' object has no attribute 'insert'

类型int没有insert方法。

更新重新评论:

您可以在列表中添加/删除/插入项目,但不能添加/删除/插入整数。请参阅此简报tutorial/reference on lists。因此,例如项插入到列表中,您将使用此方法/方法:

list.insert(index, obj)

所以在你的情况下

frames.insert(index, .. )

frames[index].insert(..)

我希望这会有所帮助。

答案 1 :(得分:0)

如果你想要一个列表,你需要先设置列表对象,就像这样。

l = []
l.append(element)

如果您在执行l = []之前执行列表操作,则会遇到您描述的问题。