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的新手!
答案 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 = []
之前执行列表操作,则会遇到您描述的问题。