首页 > 解决方案 > For循环意外结果

问题描述

我试图创建一个函数,该函数将可迭代对象作为参数并返回给定的可迭代对象列表,但没有彼此相邻的值。

例如my_function("1112334512")会返回["1", "2", "3", "4", "5", "1", "2"]

我不希望它删除可迭代对象中的重复值,我希望它删除与其旁边具有相同值的值。(例如"AAABA"完成的结果是"ABA"

def my_function(iterable):
    iterable_1 = []
    for item in iterable:
        iterable_1.append(item)

    count = 0
    for item in iterable_1:
        # Tempoary count = count + 1
        if iterable_1[count] == iterable_1[count + 1]:
            iterable_1.pop(count)
        else:
            count += 1

    return iterable_1

我的问题是,当我认为这终于做到了时,运行的结果my_function("AAAABBBCCDAABBB")返回了:['A', 'B', 'C', 'D', 'A', 'A', 'B', 'B', 'B'],理论上它在 D 之前做了正确的事情,我认为 for 循环结束了。

我的问题是为什么?如果它不是循环那么它是什么?

标签: python

解决方案


对我来说,你的方法似乎过于复杂。怎么样

def my_function(iterable):
    result = []
    for e in iterable:
        if not result or result[-1] != e:
            result.append(e)
    return result

推荐阅读