Маленькая головоломка о функциональном программировании в Python - PullRequest
0 голосов
/ 15 сентября 2018

Ввод двух целых чисел в одной строке, х и у.Мне нужно написать в основном однострочную программу, которая делает разные вещи с x и y и печатает результат.Скажем, на выходе должно быть x + 1, y * y.Или list (range (x)), y // 2. Какими бы ни были операции, кроме разных.Нет функций def, также «if» и «for» запрещены.Насколько я понимаю, это должно выглядеть примерно так:

print(
    *map(
        lambda x: ??? ,
        map(
            int, input().split()
        )
    )
)

(но лямбда может делать то же самое только с обоими входами, верно?) Я знаю, что это возможно, и я думал об этом в течение трехдней безрезультатно.Вероятнее всего, я что-то упускаю очень очевидное.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Это, кажется, работает просто отлично:

print(
    *(lambda x: [int(x[0]) + 1, int(x[1]) * int(x[1])])(
        input().split()
    )
)

Никаких причудливых функциональных уловок или map не требуется.

0 голосов
/ 15 сентября 2018

Ваша lambda функция может взять x и y и превратить их в практически любое выражение.Затем вы вызываете эту функцию, выполняя обработку входных данных вне этого lambda

print(*(lambda x, y: (x+1, y*y))(*map(int, input().split())))
print(*(lambda x, y: (list(range(x)), y//2))(*map(int, input().split())))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...