我正在尝试解决一个小谜题,我需要删除数字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之后删除该项目,但事实并非如此。
答案 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