python:根据字符串名称过滤字符串列表

die*_*gus -1 python list

我有一个字符串列表,如下所示:

li1 = ['pin 2.3','vlo 5.4', 'lu 1.3', '3 packages installed', '', 'bla']

l12 = ['pin 2.3','vlo 5.4', '2 packages installed', 'bla', 'bla']
Run Code Online (Sandbox Code Playgroud)

我想从列表中过滤掉字符串'x packages installed'以及后面的字符串:

out1 = ['pin 2.3','vlo 5.4', 'lu 1.3']


out2 = ['pin 2.3','vlo 5.4']
Run Code Online (Sandbox Code Playgroud)

我怎么能用列表理解呢?谢谢

Mos*_*oye 6

您可以使用itertools.takewhile,它从列表中获取项目,直到未传递给定条件:

from itertools import takewhile

l12 = ['pin 2.3','vlo 5.4', '2 packages installed', 'bla', 'bla']
li1 = ['pin 2.3','vlo 5.4', 'lu 1.3', '3 packages installed', '', 'bla']



r12 = takewhile(lambda x: "packages installed" not in x, l12)
ri1 = takewhile(lambda x: "packages installed" not in x, li1)
print(list(r12))
# ['pin 2.3', 'vlo 5.4']

print(list(ri1))
# ['pin 2.3', 'vlo 5.4', 'lu 1.3']
Run Code Online (Sandbox Code Playgroud)

  • 这个问题可能有些过分. (2认同)
  • @MoonCheesez我也会这么认为.但是一旦条件失败而不是列表理解,这就会停止 (2认同)