List=[1,1,1,1,2,2,2,2,3,3,3,3]
从上面的列表中,我想删除第1个,第2个,第3个和第5个,第6个,第7个,依此类推,直到我得到一个列表[1,2,3]。如果列表没有在3处停止但是继续,我应该如何删除所有其他元素?
答案 0 :(得分:3)
要删除重复项并保留订单,您可以使用itertools.groupby
:
import itertools
l =[1,1,1,1,2,2,2,2,3,3,3,3]
new_l = [a for a, _ in itertools.groupby(l)]
输出:
[1, 2, 3]
但是,如果您正在寻找一种方法来删除所有重复项,而不是长时间运行相同的值,请使用空集和for循环:
new_l = {}
for i in l:
if i not in new_l:
new_l.add(i)
答案 1 :(得分:2)
如果您的名单已经订购,您可以这样做:
my_list = [1,1,1,1,2,2,2,2,3,3,3,3]
sorted(set(my_list))
如果订单无关紧要:
list(set(my_list))
感谢@ RoadRunner在sorted(list(set(my_list)))
至sorted(set(my_list))
的协助评论
答案 2 :(得分:1)
def removeDuplicates(arr, n):
if n == 0 or n == 1:
return n
temp = list(range(n))
j = 0;
for i in range(0, n-1):
if arr[i] != arr[i+1]:
temp[j] = arr[i]
j += 1
temp[j] = arr[n-1]
j += 1
for i in range(0, j):
arr[i] = temp[i]
return j
致电:
lst = [1,1,2]
removeDuplicates(lst, len(lst))
答案 3 :(得分:1)
您想要将列表转换为一个集合,这将为您删除重复项。将集合转换回列表可能会使您更容易操作。
List = [1,1,1,1,2,2,2,2,3,3,3,3]
List = list(set(List))