@hypnospaced

Не могу понять как работает код (tuple, dictionary, lambda)?

Доброго времени суток.
Наткнулся на следующий код и никак не могу понять как он работает (вывод всех трех print'ов абсолютно одинаковые).
В частности, не могу понять как между собой взаимодействует, как я понимаю, список из одного элемента (boolean) и трех разных типов данных(кортеж, словарь, лямбда-функции).
Особенно последняя конструкция мне не понятна, так как в ней сами функции не описаны.
Код:
a = 10
b = 20

print("Minimal is", (b, a) [a<b]) # Minimal is 10
print("Minimal is", {True: a, False: b} [a<b]) # Minimal is 10
print("Minimal is", (lambda: b, lambda: a) [a<b]()) # Minimal is 10
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
[a<b] неявно приводится к типу int. True - 1, False - 0.
В первом случае всё просто - берётся либо 0, либо 1 элемент.
Во втором случае [a<b] возвращает либо True, либо False, и из словаря возвращается значение по ключу.
В третьем есть кортеж из 2 лямбда функций. 1-ая возвращает b, 2-ая - a, и нужная функция выбирается как в первом случае
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы