Усовершенствованное понимание списка Python

Учитывая два списка:

chars = ['ab', 'bc', 'ca']
words = ['abc', 'bca', 'dac', 'dbc', 'cba']

как можно использовать понимания списка для генерации фильтрованного списка words следующим условием: учитывая, что каждое слово имеет длину n и chars имеет длину n также, фильтрованный список должен включать только слова что каждый i- символ th находится в i- th представляют в виде строки в words.

В этом случае мы должны добраться ['abc', 'bca'] в результате.

(Если это выглядит знакомым кому-либо, это было одним из вопросов в предыдущем заторе кода Google),

10
задан Yuval Adam 26 March 2010 в 10:38
поделиться

3 ответа

[w for w in words if all([w[i] in chars[i] for i in range(len(w))])]
12
ответ дан 3 December 2019 в 14:24
поделиться
>>> [word for word in words if all(l in chars[i] for i, l in enumerate(word))]
['abc', 'bca']
20
ответ дан 3 December 2019 в 14:24
поделиться

Используя zip:

[w for w in words if all([a in c for a, c in zip(w, chars)])]

или используя enumerate:

[w for w in words if not [w for i, c in enumerate(chars) if w[i] not in c]]
3
ответ дан 3 December 2019 в 14:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: