I was taking a programming challenge and this question encountered, I somehow got stuck with it. I was given a list: [10, 13, 15, 18, 20, 15]
And I had to find if the sum of any element in this would provide a result 30 and output should be the count As we could see we have two possibilities, 10+20 = 30 and 15+15, so the count is 2. But how to do it, should it be using for loop or itertools or any slicing or functional solution?
You can use itetools.combinations
and a generator expression within sum
:
>>> my_list=[10, 13, 15, 18, 20, 15]
>>> from itertools import combinations
>>> sum(i+j==30 for i,j in combinations(my_list,2))
2
And if you want that items too you can use a list comprehension :
>>> [(i,j) for i,j in combinations(my_list,2) if i+j==30]
[(10, 20), (15, 15)]
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments