Python列表删除并迭代列表

时间:2013-04-04 03:10:46

标签: python list iteration

我不理解Python在下面给出的行为:

>>> adj = gx.g.neighbors('v')
>>> adj
['x', 'w']
>>> gx.d['x']
[13, 14, 'black', 'v']
>>> gx.d['w']
[9, 333, 'black', 'v']
>>> for x in adj:                    #for every element in the list
...    print "x", x, gx.d[x]
...    print "color", gx.d[x][2]
...    if gx.d[x][2] != 'white':
...       adj.remove(x)
... 
x x [13, 14, 'black', 'v']
color black
>>> adj
['w']

我不明白为什么只有元素'x'才会在循环中打印出来。 'w'发生了什么事。算法段的输出应为空列表,因为adj的两个元素都是黑色。

1 个答案:

答案 0 :(得分:4)

不要删除元素,而是创建一个新列表:

new_adj = [x for x in adj if gx.d[x][2] == 'white']