根据索引删除列表中的项目

时间:2016-06-28 19:26:58

标签: python list

我正在尝试解决一个小谜题,我需要删除数字13,以及后面的数字(在CodingBat上练习)。

这是我的代码:

n = [1, 2, 3, 13, 5, 13] 

for i in n:
    if i == 13:
        n.remove(i) and n.remove(n.index(i+1))

print n

所需的输出:[1, 2, 3]

但是,我的错误输出是:[1, 2, 3, 5] #the item after 13 (i.e. 5) did not get deleted

我认为这个n.remove(n.index(i+1))会在13之后删除该项目,但事实并非如此。

2 个答案:

答案 0 :(得分:2)

这应该有效:

n = [1, 2, 3, 13, 5, 13] 

for i in n:
    if i == 13:
        n.remove(n[n.index(i)+1]) # remove the element after `i` first
        n.remove(i) 

print n

问题的while循环:

n = [1, 2, 3, 13, 5, 13] 

i = 0
while i < len(n):
    if n[i] == 13:
        n.pop(i)
        if i < len(n):
            n.pop(i)
    else:
        i = i + 1

print n

# [1, 2, 3]

答案 1 :(得分:0)

n.remove()之后,您的数组为[1, 2, 3, 5, 13],因此n.remove(n.index(i+1))指的是13而不是5