如何删除python中列表中的Like元素?

时间:2018-01-13 03:06:23

标签: python python-3.x python-2.7

List=[1,1,1,1,2,2,2,2,3,3,3,3]

从上面的列表中,我想删除第1个,第2个,第3个和第5个,第6个,第7个,依此类推,直到我得到一个列表[1,2,3]。如果列表没有在3处停止但是继续,我应该如何删除所有其他元素?

4 个答案:

答案 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))