Как вынести часть кода?

from collections import Counter


def sleight_of_hand(k, matrix):
    c = Counter(int(x) for row in matrix for x in row if x != ".")
    return sum(x <= 2 * k for x in c.values())


def main():
    k = int(input())
    matrix = (input() for _ in range(4))
    result = sleight_of_hand(k, matrix)
    print(result)


if __name__ == "__main__":
    main()

Как и куда можно вынести 2 * k?


Ответы (2 шт):

Автор решения: Xander

Замените вот это:

return sum(x <= 2 * k for x in c.values())

на это

k2 = k * 2
return sum(x <= k2 for x in c.values())
→ Ссылка
Автор решения: CrazyElf

Поскольку k вообще в чистом виде не используется, как вариант можно вообще сразу умножить его на 2 после ввода, но лучше таки переобозвать переменную, чтобы потом не путаться при отладке где у вас что:

def sleight_of_hand(k2, matrix):
    ...
    return sum(x <= k2 for x in c.values())

def main():
    k2 = 2 * int(input())
    ...
    result = sleight_of_hand(k2, matrix)
→ Ссылка