我尝试迭代一个对象列表(我称之为" Wort",该对象有一个position属性,在这种情况下匹配临时列表中的位置)并且有一个奇怪的问题:当我访问第二个元素时,第一个元素的类会发生变化。
首先我创建如下列表:
another_loop:
w = Wort(zk, row.ts.index(zk), bibs.index(row.Bib))
templ.append(w)
然后,当我遍历列表" templ":
print("templ is of type", type(templ))
for wobj in templ:
if wobj.position > 0:
print("Element", wobj.position - 1,
"of templ is of type", type(templ[wobj.position - 1]))
else:
print("Element", wobj.position,
"of templ is of type", type(templ[wobj.position]))
给出以下输出:
templ is of type <class 'list'>
Element 0 of templ is of type <class '__main__.Wort'>
Element 0 of templ is of type <class 'method'>
所以for循环的第一次运行是正确的。位置0处的元素是
类型<class '__main__.Wort'>
但是第二次运行显示错误的类型:
<class 'method'>
我做错了什么?谢谢你的提示!
答案 0 :(得分:0)
我找到了 - 很久以后的代码...... templ列表的元素在迭代中被深深覆盖......
感谢@MooingRawr指出我正确的方向,不知何故该列表必须被打破!