Problem is this, take two lists, say for example these two:
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
And write a program that returns a list that contains only the elements that are common between the lists (without duplicates). Make sure your program works on two lists of different sizes.
Here's my code:
a = [1, 1, 2, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
c = []
for i in a:
if i in b and i not in c:
c.append([i])
print(c)
My output is still giving me duplicates despite the 'i not in c' statement. why is this? I'm sure its blatantly obvious, I just cant see it!
- You are appending a list containing
i
toc
, soi not in c
will always returnTrue
. You should appendi
on its own:c.append(i)
Or
Simply use sets (if order is not important):
a = [1, 1, 2, 2, 3, 5, 8, 13, 21, 34, 55, 89] b = [1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] c = set(a) & set(b) # & calculates the intersection. print(c) # {1, 2, 3, 5, 8, 13}
EDIT As @Ev. Kounis suggested in the comment, you will gain some speed by usingc = set(a).intersection(b)
.
user11682211
The below code would work:
newlist = []
for x in b:
if x in a:
if x in newlist:
print("duplicate")
else:
newlist.append(x)
for y in newlist:
print(y)
来源:https://stackoverflow.com/questions/47454788/common-elements-between-two-lists-with-no-duplicates