Задача с 2 суммами: учитывая несортированный список целых, найдите, если два элемента суммируются с заданной целью. Как сделать мой код более Pythoni c? - PullRequest
3 голосов
/ 21 марта 2020

Я пытаюсь узнать о рекомендациях PEP-8, написании кода Pythoni c и о стандартных библиотеках Python (я в этом путешествии). Буду очень признателен за предложения сделать следующий фрагмент кода (включая комментарии) более Pythoni c. Я знаю, что алгоритм можно улучшить, но на данный момент это не является приоритетом - но, пожалуйста, пишите, если у вас есть элегантное решение!

Я провел его через следующую проверку PEP-8, поэтому надеюсь, основы не являются проблемой: 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)

PS Мой первый вопрос: O!

...