有人可以告诉我为什么这段代码会给我一个索引错误? 非常感谢任何帮助。
def remove_adjacent(nums):
new = []
for i in range(0, (len(nums)-1)):
if nums[i] != nums[(i+1)]:
new.append(nums[i])
new.append(nums[-1]) #this is what causes the index error
return new
答案 0 :(得分:0)
如果你将空序列传递给@remove_adjacent,这将失败。喜欢remove_adjacent([])
看看这个我只是重写它。
def remove_adjacent(nums):
new = []
for i in range(0, len(nums)-1):
if nums[i] != nums[(i+1)]:
new.append(nums[i])
if len(nums):new.append(nums[-1]) # it works
return new
答案 1 :(得分:0)
为了完全避免这个问题并使其适用于任何可迭代而不仅仅是序列,您可以使用itertools.groupby()
:
from itertools import groupby
def remove_adjacent(items):
return [item for item, _ in groupby(items)]