Как работает этот синтаксис печати?print ('что-то', ['a', 'list'] [логическое значение]) - PullRequest
2 голосов
/ 28 апреля 2019
print('something', ['a', 'list'][boolean])

В зависимости от логического значения выводится либо a, либо list.

Я никогда раньше не видел эту запись и мне интересно, как она работает.

Ответы [ 3 ]

4 голосов
/ 28 апреля 2019
  1. Python bool является подклассом int, где True равно 1, а False равно 0.
    isinstance(True, int) # True
  2. Таким образом, можно использовать логические значенияв качестве индексов.['a', 'list'][boolean] оценивается как
    ['a', 'list'][0], если boolean равно False, или ['a', 'list'][1], если boolean равно True

Это может быть использовано путем непосредственного использования условий:

x = 1
print(['no', 'yes'][x > 0])
# yes
4 голосов
/ 28 апреля 2019

Обратите внимание на следующее в python

>>> True == 1
True
>>> False == 0
True

, поскольку логические значения являются целыми числами (в Python).так [0,1,2][False] == 0 и [0,1,2][True] == 1

1 голос
/ 28 апреля 2019

Логическое значение равно либо True, либо False.Если у вас есть список mylist, то mylist[0] возвращает вам первый элемент, а mylist[1] - второй элемент.mylist[False] означает то же самое, что и mylist[0].Теперь предположим, что mylist содержит ["list", "a"].Тогда ["list", "a"][False] даст вам то же значение, что и mylist[0], то есть "list".

Вы привыкли видеть индексную нотацию (например, [0]) после имени списка, как в mylist[0].Но он может также использоваться после литерала списка, как в ["list", "a"][0].

...