我正在尝试创建一个函数,该函数可以删除与它旁边的项相同的任何项。 我有下面的代码,我得到一个列表索引超出范围的错误。 如果你能帮上忙那就太棒了, 多谢各位
def unique_in_order(iterable):
chars = list(iterable)
for i in range(len(chars)):
if i > 0:
if chars[i] == chars[i-1]:
chars.remove(chars[i])
return chars
如果颠倒
for
循环的顺序,从下一个到最后一个项目开始,就不会在从正在处理的列表中删除项目时弄乱循环的范围因此,在您的例子中,从
len(chars)-2
开始,转到-1
(包括0),然后像这样执行步骤-1
:for i in range(len(chars)-2,-1,-1)
,如果需要,删除i+1
项另外,
[remove(x)][1]
方法将从列表中删除其值等于x
的第一项,因此在这种情况下,应使用pop([i])
来确保删除目标副本返回:
['A', 'B', 'C', 'D', 'A', 'B', 'X']
相关问题 更多 >
编程相关推荐