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]
答案 0 :(得分:4)
简单的列表理解可以做到:
>>> 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]
如果下一个元素不同,加上最后一个元素,你基本上都会使用每个元素。
答案 1 :(得分:3)
如果一行中可以有三个或更多值,并且只需要一个值:
(is_master, id_c)
答案 2 :(得分:1)
您可以循环浏览列表,同时跟踪之前的值,只有在它们不同时才保留下一个值:
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)