我是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
我无法弄清楚为什么会这样。
答案 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))