Given two lists:
chars = [\'ab\', \'bc\', \'ca\']
words = [\'abc\', \'bca\', \'dac\', \'dbc\', \'cba\']
how can you use list comprehensions to
Using zip:
[w for w in words if all([a in c for a, c in zip(w, chars)])]
or using enumerate:
[w for w in words if not [w for i, c in enumerate(chars) if w[i] not in c]]
A more simple approach:
yourlist = [ w for w in words for ch in chars if w.startswith(ch) ]
[w for w in words if all([w[i] in chars[i] for i in range(len(w))])]
This works, using index
:
[words[chars.index(char)] for char in chars if char in words[chars.index(char)]]
Am I missing something?
Why so complex? This works as well:
[words[x] for x in range(len(chars)) if chars[x] in words[x]]
>>> [word for word in words if all(l in chars[i] for i, l in enumerate(word))]
['abc', 'bca']