@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
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
[a<b] неявно приводится к типу int. True - 1, False - 0.
В первом случае всё просто - берётся либо 0, либо 1 элемент.
Во втором случае [a<b] возвращает либо True, либо False, и из словаря возвращается значение по ключу.
В третьем есть кортеж из 2 лямбда функций. 1-ая возвращает b, 2-ая - a, и нужная функция выбирается как в первом случае
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект