+ 19

Does Python List Comprehension with 2 if conditions work properly?

I have used an existing code (for loop) and tried to do the same task with list comprehension and 2 conditional expressions, but the result is not as it should be. The conditional statement is exactly the same In both code samples. The code should pick doublicates from a source list and put them to separate list. Here are both codes: https://code.sololearn.com/cmMwjVDBbfcO/?ref=app

17th Jul 2019, 4:42 PM
Lothar
Lothar - avatar
4 Answers
+ 4
oh, you simply need to append the numbers to duplst or else your “i not in duplst” will look at an empty list. lst = [1,2, 4, 3, 2, 7, 90, 1] duplst = [] [duplst.append(i) for i in lst if lst.count(i) > 1 and i not in duplst] print(duplst)
20th Jul 2019, 6:14 AM
Choe
Choe - avatar
+ 9
Diego, Tibor Santa, Choe thank you very much for your support! It was a small issue in my code which I did not recognize and you gave me real good and helpful solutions. I appreciate your help very much - Thanks!
20th Jul 2019, 9:08 AM
Lothar
Lothar - avatar
+ 6
The problem with v4 is that "duplist" is not updated after each iteration, so "i not in duplist" checks for "i" in an empty list. If you don't care about order you can do print([i for i in set(lst) if lst.count(i) > 1]) # [1, 2] If you do care about order you can do print([i for i in sorted(set(lst), key=lambda n: lst.index(n)) if lst.count(i) > 1]) # [1, 2]
17th Jul 2019, 5:14 PM
Diego
Diego - avatar
+ 6
Also this can work In the second condition you check if the element occurs in the original list up to the current index duplst = [v for k, v in enumerate(lst) if lst.count(v) > 1 and v not in lst[:k]]
18th Jul 2019, 4:40 AM
Tibor Santa
Tibor Santa - avatar