Два for в одну строчку
res = []
for k in str:
for j in str1:
if k == j:
res.append(k)
Возможно ли записать это в одну строчку?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
str - плохое название для переменной, оно перекрывает встроенный класс питона. Поэтому у меня будут str1 и str2.
Второй цикл for вообще не нужен, его можно заменить оператором in. Вариант со списковым включением:
res = [k for k in str1 if k in str2]
Вариант через множества вообще без for, но он подходит только в случае, если символы в строках не повторяются и порядок следования символов в результате не важен (и если на выходе нужен именно список, нужно потом результат преобразовать через list()):
res = set(str1) & set(str2)
Ну и на закуску "функциональный" вариант с filter (аналог первого варианта по сути):
res = list(filter(str2.__contains__, str1))