How to delete Like elements in Lists in python?
本问题已经有最佳答案,请猛点这里访问。
1 | List=[1,1,1,1,2,2,2,2,3,3,3,3] |
从上面的列表中,我想删除第一、第二、第三和第五、第六、第七等等,直到我得到一个列表[1、2、3]。如果列表不是停在3,而是继续,我应该如何删除所有其他元素?
要删除重复项并保留订单,可以使用
1 2 3 | 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 | [1, 2, 3] |
号
但是,如果要查找删除所有重复项的方法,而不是相同值的长时间运行,请使用空集合和for循环:
1 2 3 4 | new_l = {} for i in l: if i not in new_l: new_l.add(i) |
如果您的列表是有序的,您可以这样做:
1 2 3 | my_list = [1,1,1,1,2,2,2,2,3,3,3,3] sorted(set(my_list)) |
。
如果订单无关紧要:
1 | list(set(my_list)) |
感谢@roadrunner在评论中给予EDOCX1[1]到EDOCX1[2]的帮助。
您希望将列表转换为一个集合,这将为您删除重复项。将集合转换回列表可能会使您更容易操作。
1 2 | List = [1,1,1,1,2,2,2,2,3,3,3,3] List = list(set(List)) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 |
。
打电话:
1 2 | lst = [1,1,2] removeDuplicates(lst, len(lst)) |
。