gpt4 book ai didi

python-2.7 - 在python中删除列表中的相邻元素

转载 作者:行者123 更新时间:2023-12-04 13:49:39 25 4
gpt4 key购买 nike

我正在尝试做一个简单的 python 程序来删除列表中的所有相邻元素

def main():
a = [1, 5, 2, 3, 3, 1, 2, 3, 5, 6]
c = len(a)

for i in range (0, c-2):
if a[i] == a[i+1]:
del a[i]
c = len(a)

print a

if __name__ == '__main__':
main()

输出是

[1, 5, 2, 3, 3, 2, 3, 5, 6] 没问题!

如果将 a 列表更改为 a = [1, 5, 2, 3, 3, 1, 2, 2, 5, 6]

然后报错

索引列表超出范围

**if a[i] == a[i+1]**

它不应该提示索引超出范围,因为每次它删除列表中的元素时我都在计算 len(a) 。我在这里错过了什么?

最佳答案

for i in range (0, c-2):

这不像某些其他语言中的for 循环;它遍历 range(一次)返回的列表。当您稍后更改 c 时,它不会影响此循环。

可以改用while:

c = len(a)

while i < c - 2:
if a[i] == a[i + 1]:
del a[i]
c = len(a)
else:
i += 1

还有 itertools.groupby :

import itertools

def remove_consecutive(l):
return (k for k, v in itertools.groupby(l))

关于python-2.7 - 在python中删除列表中的相邻元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23475779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com