0
Solve the following problem in python
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.
6 ответов
+ 2
it's quite simple. first it has 3 lists. the 2 you want to check, and an empty one we will put the common numbers in
two = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
one = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
both=[]
Then it has 2 blocks of code. it only uses 1 of them. it checks the length of the 2 lists. if the second list is bigger it runs the first block. inside it has a for loop. it loops thru the first list because it is smallest. That will make it more efficient. being the shorter of the lists it has less possible common numbers to check. So for each number in the first list it checks if that number is in The second list. if it is, it checks if it is already in the common list. if it is in both list 1 and list 2, but not already in the common list it adds it to the common list. Then the loop simply checks the next number in the one list.
if len(one) < len(two):
for i in one:
if i in two and i not in both:
both.append(i)
if list one is bigger, it runs this block instead.
if len(one) > len(two):
it starts a for loop to check all the numbers in the smaller list.
for i in two:
it checks if each of those numbers are in the bigger list and if they exist already in the common list
if i in one and i not in both:
if it is in both lists but not yet in the common list it adds it to the common list
both.append(i)
Then it prints the common list
print(both)
+ 3
Here. Change the 2 lists at the top as you see fit, it will tell you the numbers they both contain.. Let me know what grade you get.
two = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
one = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
both=[]
if len(one) < len(two):
for i in one:
if i in two and i not in both:
both.append(i)
if len(one) > len(two):
for i in two:
if i in one and i not in both:
both.append(i)
print(both)
+ 1
I completely got it. Thanks a lot !
0
Thankyou so much for helping me. Can you also explain me how this code works please. I am a bit confused.
0
Also, Check this
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]
common=[]
a = set(a)
b = set(b)
for x in a:
if x in b:
common.append(x)
print(common)
0
Check it, it works correctly
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]
c = [x for x in a for y in b if x == y]
print (set(c))