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

标签 python-2.7

我正在尝试做一个简单的 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/

相关文章:

python hashlib sha224 - 输入中不支持的字符

python - 使用 docx 模块使用 Python 检查 .docx 形式的复选框

python-2.7 - 如何安排 dag 运行一年中一个月的特定时间。即,一次

javascript - JS 和 Python 之间的基准测试性能差异

postgresql - 如何使用 python 或查询将嵌套的 json 列从 postgresql 数据库转换为数据框?

python - 特殊字符不被正则表达式替换

python - 如何在Python中找到GridSearchCV的所有参数?

Python 2.7 super 错误

python - 在方法中扩展或追加字符串

python-2.7 - 检查文件是证书还是 key