Как сократить добавление в разные списки в зависимости от результата оператора if - PullRequest
5 голосов
/ 02 апреля 2019

Есть идеи, можно ли укоротить и украсить этот (дополнительный вариант предполагает вложенные условия if-else и несколько списков)?

some_list, some_other_list = [], []
if condition:
    some_list.append(value)
else:
    some_other_list.append(value)

Ответы [ 3 ]

9 голосов
/ 02 апреля 2019

троичное выражение:

(some_list if condition else some_other_list).append(value)

Пояснение:

>>> condition = True
>>> ("A" if condition else "B")
A

>>> condition = False
>>> ("A" if condition else "B")
B
5 голосов
/ 02 апреля 2019

Я думаю, вы могли бы использовать троичный.

some_list.append(value) if condition else some_other_list.append(value)
0 голосов
/ 02 апреля 2019

С небольшим разбросом:

(condition and some_other_list or some_list).append(value)

OR

Для версий Python ниже 2.5 подход Tuple / lambda:

((lambda: some_other_list.append(value), lambda: some_list.append(value))[condition]())

Объяснение

condition = True

some_list = []
some_other_list = []
value = 5

((lambda: some_other_list.append(value), lambda: some_list.append(value))[condition]())

print(some_list)             # 5
print(some_other_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...