输入字符串或int列表,返回彼此不重复的列表

时间:2017-10-06 12:01:34

标签: python python-3.x

输入:字符串或整数列表 输出:与输入

的顺序相同且没有重复的元素列表

即。 ('aabbcccdddaaa')=('a','b','c','d','a')

def no_near_dups(a):
    L = []
    i = 0
    while i < len(str(a)):
        if a[i] == a[i+1]:
            i += 1
            continue
        L.append(a[i])
        i += 1
    L.append(a[i])
    return L

我收到错误:IndexError:字符串索引超出范围

3 个答案:

答案 0 :(得分:0)

您收到该错误,因为当我等于a[i] == a[i+1]时,行len(str(a))-1索引超出了界限。这就是为什么要将代码更改为:

def no_near_dups(a):
    L = []
    i = 0
    while i < len(str(a))-1:
        if a[i] == a[i+1]:
            i += 1
            continue
        L.append(a[i])
        i += 1
    L.append(a[i])
    return L

答案 1 :(得分:0)

你可以这样做:

>>> a='aabbcccdddaaa'
>>> from itertools import groupby
>>> "".join([i for i,k in groupby(a)])
'abcda'

答案 2 :(得分:-1)

len从1开始计数 - &gt;然后,指数从0开始 - >向前 所以有一个索引超出范围错误

def no_near_dups(a):
L = []
i = 0
while i < len(str(a)-1): **add a minus one**
    if a[i]) == a[i+1]):
        i += 1
        continue
    L.append(a[i])
    i += 1
L.append(a[i])
return L