Cyril,
Here's some code that (I think) does what you want:
l = [1, 7, 3, 4, 3, 2, 1] s, dups = set(), set() for x in i: if x in s: dups.add(x) s.add(x)
print dups
I'm sure there are more elegant ways to do it, but this seemed to be the most straightforward way I could think of.
Hope this helps, Alan McIntyre ESRG LLC http://www.esrgtech.com
Cyril BAZIN wrote:
Hello,
I want to build a function which return values which appear two or more times in a list:
So, I decided to write a little example which doesn't work: #l = [1, 7, 3, 4, 3, 2, 1] #i = iter(l) #for x in i: # j = iter(i) # for y in j: # if x == y: # print x
In thinked that the instruction 'j= iter(i)' create a new iterator 'j' based on 'i' (some kind of clone). I wrote this little test which show that 'j = iter(i)' is the same as 'j = i' (that makes me sad):
#l = [1, 7, 3, 4, 2] #i = iter(l) #j = iter(i) #k = i #i, j, k (<listiterator object at 0x02167B50>, <listiterator object at 0x02167B50>, <listiterator object at 0x02167B50>)
Just in order to test, I wrote these little test: #l = [1, 7, 3, 4, 2] #i = iter(l) #import pickle #j = pickle.loads(pickle.dumps(i)) Traceback (most recent call last): File "<input>", line 1, in ? File "C:\Python24\lib\pickle.py", line 1386, in dumps Pickler(file, protocol, bin).dump(obj) File "C:\Python24\lib\pickle.py", line 231, in dump self.save(obj) File "C:\Python24\lib\pickle.py", line 313, in save rv = reduce(self.proto) File "C:\Python24\lib\copy_reg.py", line 69, in _reduce_ex raise TypeError, "can't pickle %s objects" % base.__name__ TypeError: can't pickle listiterator objects
#import copy #j = copy.copy(i) Traceback (most recent call last): File "<input>", line 1, in ? File "C:\Python24\lib\copy.py", line 95, in copy return _reconstruct(x, rv, 0) File "C:\Python24\lib\copy.py", line 320, in _reconstruct y = callable(*args) File "C:\Python24\lib\copy_reg.py", line 92, in __newobj__ return cls.__new__(cls, *args) TypeError: object.__new__(listiterator) is not safe, use listiterator.__new__()
So, I would like to know if there is a way to 'clone' a 'listiterator' object. I know that is possible in Java for example...
If it is impossible, have you better ideas to find duplicate entries in a list...
Thanks,
Cyril
-- http://mail.python.org/mailman/listinfo/python-list