Понимание списка с помощью оператора if
Я хочу сравнить 2 iterables и распечатать элементы, которые появляются в обоих iterables.
>>> a = ('q', 'r')
>>> b = ('q')
# Iterate over a. If y not in b, print y.
# I want to see ['r'] printed.
>>> print([ y if y not in b for y in a])
^
но это дает мне недопустимую синтаксическую ошибку, где ^
был помещен.
Что плохого в этой функции Ламба?
4 ответа:
вы неправильно поняли заказ. Элемент
if
должен быть послеfor
(если он не находится вif-else
тернарный оператор)[y for y in a if y not in b]
это будет работать:
[y if y not in b else other_value for y in a]
поставить
if
В конце:[y for y in a if y not in b]
список постижений записываются в том же порядке, что и их вложенные полные указанные аналоги, по существу приведенное выше утверждение переводится в:
outputlist = [] for y in a: if y not in b: outputlist.append(y)
ваша версия пыталась сделать это вместо этого:
outputlist = [] if y not in b: for y in a: outputlist.append(y)
но список понимания должны начните хотя бы один внешний цикл.