Python,为什么这个for循环需要运行3次才能工作?

时间:2017-07-11 23:00:03

标签: python arrays numpy for-loop

我通过

制作了一个数组索引列表
indexlist = [(x, y) for x, y in np.ndindex(a.shape)]

a是4x7阵列。我试图找出一种方法来获取特定列中每个索引的列表,除了该列中的一个特定索引(在此示例中,感兴趣的索引是(1,2)。我使用了这个:

for i in indexlist:
if i[1] != pivot[1]:
    indexlist.remove(i)
    print(i)

(pivot =(1,2))。我希望这给我一个只有(0,2)(1,2)(2,2)(3,2)的列表,但我得到一个更大的列表。当我再次运行它时,它会删除一些值。它达到了我的预期,但只有在我运行3次之后。为什么呢?

for i in indexlist:
if i[1] != pivot[1]:
    indexlist.remove(i)
    print(i)

(0, 0)
(0, 3)
(0, 5)
(1, 0)
(1, 3)
(1, 5)
(2, 0)
(2, 3)
(2, 5)
(3, 0)
(3, 3)
(3, 5)

for i in indexlist:
    if i[1] != pivot[1]:
        indexlist.remove(i)
        print(i)

(0, 1)
(0, 4)
(1, 1)
(1, 4)
(2, 1)
(2, 4)
(3, 1)
(3, 4)

for i in indexlist:
    if i[1] != pivot[1]:
        indexlist.remove(i)
        print(i)

(0, 6)
(1, 6)
(2, 6)
(3, 6)

for i in indexlist:
    if i[1] != pivot[1]:
        indexlist.remove(i)
        print(i)


print(indexlist)
[(0, 2), (1, 2), (2, 2), (3, 2)]

澄清,我想从列表中删除项目,但我不明白为什么它不能同时删除i!= 2的项目(x,i)。

0 个答案:

没有答案