Понимание списка с помощью оператора 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)но список понимания должны начните хотя бы один внешний цикл.