2012-07-25 2 views
0

HELP! Когда я получаю одно дело, что-то еще не работает! Опять же, я уверен, что это просто для опытных глаз, но я борюсь! Это код, в котором я создаю списки и данные для указанных списков.AttributeError: объект 'int' не имеет атрибута 'insert'

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

+3

Ответ Левона абсолютно прав, но трудно сказать, что вы здесь делаете. Возможно, если бы вы сказали нам, что должен был выполнить этот кусок кода, мы могли бы помочь вам исправить это, а не сообщать вам, почему вы получаете определенную ошибку. – mgilson

+0

Обратите внимание: 'frames = allframes' не будет делать копию, поэтому кадры и allframes относятся к одному списку. Если вам нужно сделать копию, используйте 'frames = allframes [:]' или 'frames = list (allframes)'. – Lenna

+0

Этот код предназначен для заполнения значений RGB для огней RGB. Вся информация является числовой, нет текстовых строк или данных. Если вставка вызывает ошибку, как мне заполнить [фреймы] другими числовыми данными? –

ответ

3

Эти выражения frames[((archnodes*3)+f)] (все 3 версии) оценивают как целые числа, и вы пытаетесь вызвать метод insert(), который является причиной вашей ошибки.

f - целое число, созданное в замкнутом цикле, и способ archnodes, используемый в первом цикле for, также подразумевает, что они являются числами. frames - это список номеров, созданных в вашем первом цикле, поэтому вы индексируете его в список чисел, а затем пытаетесь вызвать метод insert() на конкретный номер в списке. Как говорится в сообщении об ошибке,

'int' object has no attribute 'insert'

тип int не имеет insert метод.

Update повторно комментарий выше:

Вы можете добавить/удалить/вставить элементы в список, но вы не можете добавлять/удалять/вставлять в целое число. См. Это краткое сообщение tutorial/reference on lists. Так, например, к вставки элемент в списке, вы будете использовать этот подход/методы:

list.insert(index, obj) 

так в вашем случае

frames.insert(index, ..) 

не

frames[index].insert(..) 

Я надеюсь, что это помогает.

+0

«как-то оценивают целые числа» - потому что они настроены таким образом в первом цикле. – mgilson

+0

@mgilson Вы правы ... спасибо – Levon

+0

СПАСИБО !!! Он работает сейчас! –

0

Если вы хотите иметь список, вам нужно сначала настроить объект списка, как этот.

l = [] 
l.append(element) 

Если вы просто сделать манипуляцию список, прежде чем делать l = [] вы будете иметь проблемы, вы можете описать.

Смежные вопросы