python:使用列表推导过滤嵌套的字符串列表

时间:2016-06-01 12:20:20

标签: python list-comprehension

我正在尝试使用列表推导来过滤此列表:

inp = [['Fire 46.0.1', 'vlc 2.2.3','opt 0.9.9.10'],
       ['opt 0.9.9.11', 'notepad 6.9', 'adobe. 6.9', 'vlc 2.3.3']]

out = [['Fire 46.0.1', 'vlc 2.2.3',],
       ['notepad 6.9', 'adobe. 6.9', 'vlc 2.3.3']]

即。删除所有以'opt'开头的字符串。我正在尝试像

这样的东西
[soft for ls in inp if soft not soft.startswith('opt')]

但语法有问题。有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

这应该做:

[[s for s in item if not s.startswith('opt')] for item in inp ]

使用startswith过滤掉子列表中带有opt的项目

答案 1 :(得分:2)

您需要嵌套列表推导来过滤嵌套列表。

[[y for y in x if not y.startswith('opt')] for x in inp]