Python - TypeError:' int'对象没有属性' __ getitem __'

时间:2013-11-20 18:43:39

标签: python

我是python的初学者,我在列表中迭代时遇到了麻烦。这是我遇到问题的代码:

for x in list(xrange(instance.nbw)):
         sddpbw.append(choice(sddpfw))
print sddpbw

for t in reversed(list(xrange(instance.T))): 

    if t>0:
        for u in sddpbw:
            # for n in list(xrange(1,instance.NUMPATHS+1,passo)):
            for n in pairs[t][u-1]:
                if n != u:
                    for p in instance.HP:
                        x[n-1][t-1][p-1]=x[u-1][t-1][p-1]

我有一个上一个列表(sddpfw),想要从中选择一些元素并创建另一个列表(sddpbw)。 退出是:

[4, 2]
Traceback (most recent call last):
   File "PDDE.py", line 179, in <module>
       x[n-1][t-1][p-1]=x[u-1][t-1][p-1]
TypeError: 'int' object has no attribute '__getitem__'

但是如果我评论创建变量sddpbw的部分并手动创建它就可以正常工作:

# for x in list(xrange(instance.nbw)):
    # sddpbw.append(choice(sddpfw))
sddpbw=[4, 2]
print sddpbw

我无法弄清楚为什么会这样。

1 个答案:

答案 0 :(得分:2)

您在此行重置了x变量。循环完成后,您将x作为整数。

for x in list(xrange(instance.nbw)):
     sddpbw.append(choice(sddpfw))

例如

>>> c = [1,2,3]
>>> c
[1, 2, 3]
>>> for c in xrange(1, 3):
...     print(c)
... 
1
2
>>> c
2

您需要将此x更改为其他任何名称。

for _ in list(xrange(instance.nbw)):
   sddpbw.append(choice(sddpfw))