'2-sum problem: given an unsorted list of ints, find if two elements sum to a given target. How to make my code more Pythonic?
I'm trying to learn about PEP-8 guidelines, writing Pythonic code, and about Python's standard libraries (am a day into this journey). Suggestions to make the following piece of code (including comments) more Pythonic would be much appreciated. I know the algorithm could be improved, but this isn't a priority at the moment - but please do write if you have an elegant solution!
I've run it through the following PEP-8 checker, so hopefully the basics are not a problem: http://pep8online.com/checkresult
import collections
def two_sum(input_list, target):
# Determine if two elements in list add to target
# dict_of_counts - key: element from input_list, value: count of element
dict_of_counts = collections.Counter(input_list)
for key in dict_of_counts:
complement_key = target - key
if complement_key in dict_of_counts:
# Corner case: complement_key is the same as key,
# but the count is one (so threat of a false +ve)
if complement_key != key:
return(True)
elif dict_of_counts[complement_key] > 1:
return(True)
return(False)
P.S. My first question ever : O !
Solution 1:[1]
If you want to improve your PEP-8 skills, I highly recommend using a linter such as flake8. It is really good in finding any PEP-8 violations, and while you're trying to make flake8 happy you'll learn all the ins- and outs as you go.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Bastian Venthur |