Python 如何删除列表中相邻的重复值之一?
如何删除每个列表上相邻的重复值之一 删除彼此相邻的所有一个重复值后,它们应如下所示:Python 如何删除列表中相邻的重复值之一?,python,list,duplicates,Python,List,Duplicates,如何删除每个列表上相邻的重复值之一 删除彼此相邻的所有一个重复值后,它们应如下所示: x1 = [5, 5] x2 = [1, 5, 5, 2] x3 = [5, 5, 1, 2, 5, 5] x4 = [5, 5, 1, 5, 5, 2, 5, 5] x5 = [5, -5] x6 = [1, 2, 3, 4] x7 = [5, 5, 5, 5, 5, 5] 简单的列表理解可以: x1 = [5] x2 = [1, 5, 2] x3 = [5, 1, 2, 5] x4 = [5, 1, 5,
x1 = [5, 5]
x2 = [1, 5, 5, 2]
x3 = [5, 5, 1, 2, 5, 5]
x4 = [5, 5, 1, 5, 5, 2, 5, 5]
x5 = [5, -5]
x6 = [1, 2, 3, 4]
x7 = [5, 5, 5, 5, 5, 5]
简单的列表理解可以:
x1 = [5]
x2 = [1, 5, 2]
x3 = [5, 1, 2, 5]
x4 = [5, 1, 5, 2, 5]
x5 = [5, -5]
x6 = [1, 2, 3, 4]
x7 = [5]
基本上,如果下一个元素不同,则取每个元素,再加上最后一个元素。当一行中可以有三个或更多值,并且只需要一个值时:
>>> x = [5, 5, 1, 5, 2, 5, 5]
>>> [a for a, b in zip(x, x[1:]) if a != b] + [x[-1]]
[5, 1, 5, 2, 5]
您可以在跟踪上一个值的同时在列表上循环,如果下一个值不同,则只保留下一个值:
from itertools import groupby
def remove_consecutive_duplicates(iterable):
return [v for v, g in groupby(iterable)]
如果一行中有三个值,会发生什么?它仍然是重复的,相同的两个值将被删除,一个将保留。编辑:这是你的家庭作业吗?你应该尊重别人。不是每个人都像你一样是专业人士、天才之类的。有些人只是新手、好奇、业余爱好者之类的。我讨厌看到有人给不努力的提问者家庭作业答案。@JamesKPolk我通常也这样做,只是这不是家庭作业(可能是学习),它要求一个半吊子的解决方案,也就是说它没有半吊子的解决方案。这不是目的吗?问你不知道的问题?我怎样才能尝试回答我不知道的问题?我努力在SO和Google中搜索这个问题,没有发现类似的问题。你希望我做什么?
def uniquefy_conseq_vals(my_list):
prev = None
new_list = []
for ele in my_list:
if ele != prev:
new_list.append(ele)
prev = ele
return new_list
if __name__ == "__main__":
x1 = [5, 5]
x2 = [1, 5, 5, 2]
x3 = [5, 5, 1, 2, 5, 5]
x4 = [5, 5, 1, 5, 5, 2, 5, 5]
x5 = [5, -5]
x6 = [1, 2, 3, 4]
x7 = [5, 5, 5, 5, 5, 5]
print uniquefy_conseq_vals(x1)
print uniquefy_conseq_vals(x2)
print uniquefy_conseq_vals(x3)
print uniquefy_conseq_vals(x4)
print uniquefy_conseq_vals(x5)
print uniquefy_conseq_vals(x6)
print uniquefy_conseq_vals(x7)