2016-06-01 7 views
0

Ich versuche Liste Verständnis zu verwenden, um diese Liste zu filtern:Python: Filter eine verschachtelte Liste von Strings mit Liste Verständnis

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']] 

in

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

dh alle Fäden zu entfernen, die mit 'beginnen opt '. Ich versuche etwas wie

[soft for ls in inp if soft not soft.startswith('opt')] 

Aber etwas stimmt nicht mit der Syntax. Irgendeine Hilfe?

Antwort

1

Sie benötigen eine verschachtelte Liste Verständnis eine verschachtelte Liste zum Filtern.

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

sollte dies tun:

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

Verwenden startswith aus den Teillisten mit opt Elemente herauszufiltern

+0

Danke das funktioniert auch! – diegus