输入:字符串或整数列表 输出:与输入
的顺序相同且没有重复的元素列表即。 ('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:字符串索引超出范围
答案 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