如何从列表中删除少于N个令牌的字符串?

ano*_*non 2 python python-3.x

给出一个字符串列表,说:

a = ['hey','hey how are you','good how are you','I am', 'I am fine 8998','9809 908']
Run Code Online (Sandbox Code Playgroud)

如何删除少于三个令牌的字符串?:

a = ['hey how are you','good how are you', 'I am fine 8998']
Run Code Online (Sandbox Code Playgroud)

我试过了:

' '.join(a.split(' ')[3:])
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用.知道如何删除少于三个令牌的所有字符串

sac*_*cuL 7

你可以使用这个列表理解:

>>> [i for i in a if len(i.split())>=3]
['hey how are you', 'good how are you', 'I am fine 8998']
Run Code Online (Sandbox Code Playgroud)


Aus*_*tin 6

这是使用filter和执行相同操作的另一种方法lambda:

a = ['hey','hey how are you','good how are you','I am', 'I am fine 8998','9809 908']

res = list(filter(lambda x: x.count(' ') >= 2, a))
# ['hey how are you', 'good how are you', 'I am fine 8998']
Run Code Online (Sandbox Code Playgroud)

要么:

res = list(filter(lambda x: len(x.split()) >= 3, a))
Run Code Online (Sandbox Code Playgroud)