python for循环更改列表元素的类型

时间:2018-02-16 17:30:40

标签: python python-3.x

我尝试迭代一个对象列表(我称之为" 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'>

我做错了什么?谢谢你的提示!

1 个答案:

答案 0 :(得分:0)

我找到了 - 很久以后的代码...... templ列表的元素在迭代中被深深覆盖......

感谢@MooingRawr指出我正确的方向,不知何故该列表必须被打破!