高级Python列表理解

Yuv*_*dam 10 python list-comprehension

给出两个列表:

chars = ['ab', 'bc', 'ca']
words = ['abc', 'bca', 'dac', 'dbc', 'cba']
Run Code Online (Sandbox Code Playgroud)

你如何使用列表推导来生成一个words由以下条件过滤的列表:假设每个单词的长度nchars长度n也是如此,过滤后的列表应该只包含每个i字符在i-th字符串中的单词words.

在这种情况下,我们应该得到['abc', 'bca']结果.

(如果这对任何人来说都很熟悉,这是之前Google代码堵塞中的一个问题)

Sil*_*ost 20

>>> [word for word in words if all(l in chars[i] for i, l in enumerate(word))]
['abc', 'bca']
Run Code Online (Sandbox Code Playgroud)


Mar*_*tos 12

[w for w in words if all([w[i] in chars[i] for i in range(len(w))])]
Run Code Online (Sandbox Code Playgroud)

  • 坦率地说,我更喜欢@SilentGhost的回答. (2认同)