# how to remove duplicate elements in a list

 0 From a list L = ([1,2,3,4],[3,5,6,7],[7,8,9,10],[1,2,3.4]) remove duplicate sets here [1,2,3,4] has occurred twice and put only one making L = ([1,2,3,4],[3,5,6,7],[7,8,9,10]) asked Sep 17 '10 sriram 11 ● 2 ● 2 ● 6 Kelvin Li 443 ● 10 ● 17 L is a tuple. For a list, replace the outer parens with square brackets. ccanonc (Sep 17 '10) Please change your tags. "urgentX" is more annoying than I am. ccanonc (Sep 17 '10)

 0 Maybe this might help: sage: L = [[1,2,3,4], [3,5,6,7], [7,8,9,10], [1,2,3,4]] sage: seen = [] sage: for e in L: ....: if e in seen: ....: continue ....: seen.append(e) ....: sage: seen [[1, 2, 3, 4], [3, 5, 6, 7], [7, 8, 9, 10]]  posted Sep 17 '10 mvngu 316 ● 7
 0 If you're lazy and don't care about ordering in L: sage: list(set(L))  Again, all of this is pure Python, so you might benefit from reading a tutorial on writing Python code. posted Sep 17 '10 jsrn 124 ● 1 ● 9
 0 The page fastest way to uniquify a list in python addresses this; there, it's claimed that the following function is the "best" (fast, and maintains order): def f5(seq, idfun=None): # order preserving if idfun is None: def idfun(x): return x seen = {} result = [] for item in seq: marker = idfun(item) # in old Python versions: # if seen.has_key(marker) # but in new ones: if marker in seen: continue seen[marker] = 1 result.append(item) return result  posted Sep 17 '10 niles 3605 ● 7 ● 45 ● 101 http://nilesjohnson.net/
 2 Sage has a uniq() function already. However, it requires that the data is hashable, so you can uniq-ify tuples and frozensets but not lists and sets: sage: L = [(1, 2, 3, 4), (3, 5, 6, 7), (7, 8, 9, 10), (1, 2, 3, 4)] sage: uniq(L) [(1, 2, 3, 4), (3, 5, 6, 7), (7, 8, 9, 10)]  posted Sep 21 '10 Volker Braun 2666 ● 9 ● 24 ● 59

[hide preview]