Compare Two Lists and Find Missing Element in Second List - Python
for i in b:
a.remove(i)
return a
a.sort()
b.sort()
for num1, num2, in zip(a,b):
if num1!=num2:
return num1
return a[-1]
def finder3(a,b):
d = collections.defaultdict(int)
for n in b:
d[n] += 1
for m in a:
if d[m] == 0:
return m
else:
d[m] -= 1
return sum(a) - sum(b)
b = [19,10,20,9,11,6,12,3,13,2,14,4,15,8,16,5,17,1,18]
%timeit finder(a, b)
%timeit finder2(a, b)
Solutions
Iterating smaller list and removing the element from other list #516 ns
def finder(a, b):for i in b:
a.remove(i)
return a
Sorting, Zipping, Comparing each pair and returning first occurrence of mismatching pair #984 ns
def finder2(a,b):a.sort()
b.sort()
for num1, num2, in zip(a,b):
if num1!=num2:
return num1
return a[-1]
Adding to dictionary and counting occurrence #5250 ns
import collectionsdef finder3(a,b):
d = collections.defaultdict(int)
for n in b:
d[n] += 1
for m in a:
if d[m] == 0:
return m
else:
d[m] -= 1
Subtracting sum of smaller list from larger list #538 ns
def finder4(a,b):return sum(a) - sum(b)
Testing Time
a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]b = [19,10,20,9,11,6,12,3,13,2,14,4,15,8,16,5,17,1,18]
%timeit finder(a, b)
%timeit finder2(a, b)
%timeit finder3(a, b)
%timeit finder4(a, b)
Output
The slowest run took 12.04 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 516 ns per loop
The slowest run took 26.17 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 984 ns per loop
100000 loops, best of 3: 5.25 ยตs per loop
The slowest run took 5.56 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 538 ns per loop
Comments
Post a Comment