我不明白在Python中索引是如何通过循环的。你知道吗
在这段相当简单的代码中,del l[i+1]
为什么会给出索引越界错误?支票不是由while循环处理吗?如何检查是否处于循环的末尾?你知道吗
def getString(str):
l = list(str)
i=0
while i < len(l)-1 and i != len(l)-1:
if l[i] == l[i+1]:
del l[i]
del l[i+1]
i=0
if len(l) == 0:
print("Empty String")
break
else:
i+=1
print(l)
str = "aabbcc"
getString(str)
删除
l[i]
时,会将列表缩小一倍。如果您只做了del l[i+1]
就可以了,或者如果您按相反的顺序删除了,那么就可以了,但是首先删除前面的元素意味着您实际上是在删除元素i+2
(基于循环执行开始时的原始列表)。你知道吗只需切换到:
或者更有效地同时删除两个元素:
会解决这个问题。你知道吗
如图所示,考虑
[1, 2]
(我们假设您的if检查通过了,我使用了不同的值使其更易于理解)。当i
是0
时,您del l[0]
,将l
保留为[2]
,然后您del l[1]
,它现在已超过列表的末尾。如果你先del l[1]
,你就有了[1]
,而del l[0]
工作得很好。你知道吗@ShadowRanger's answer是正确的。您可以在命令行中使用python来查看区别:
相关问题 更多 >
编程相关推荐