2

帮助!就在我让一件事起作用时,另一件事却不起作用!同样,我确信经验丰富的眼睛很简单,但我很挣扎!这是我生成列表和所述列表数据的代码。

#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 新手!

4

2 回答 2

5

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

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

'int' object has no attribute 'insert'

该类型int没有insert方法。

更新上面的评论:

您可以向列表添加/删除/插入项目,但不能向整数添加/删除/插入。请参阅有关列表的简短教程/参考。因此,例如要将项目插入列表中,您将使用以下方法/方法:

list.insert(index, obj)

所以在你的情况下

frames.insert(index, .. )

不是

frames[index].insert(..)

我希望这有帮助。

于 2012-07-25T01:44:23.723 回答
0

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

l = []
l.append(element)

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

于 2012-07-25T01:49:16.787 回答