Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表上循环查找另一个列表的匹配项_Python_Loops_If Statement_Select_Iteration - Fatal编程技术网

Python 在列表上循环查找另一个列表的匹配项

Python 在列表上循环查找另一个列表的匹配项,python,loops,if-statement,select,iteration,Python,Loops,If Statement,Select,Iteration,假设有这样一个列表: [[t[0] for t in tagger.tag(s)] for s in corpus.sents()[:5]] 看起来像这样: [['1'], ['Hermann', 'Hesse', 'Der', 'Steppenwolf'], ['Erzählung'], ['Vorwort', 'des', 'Herausgebers'], ['Dieses', 'Buch', 'enthält', 'die', 'uns', 'geblichenen', 'Aufzeic

假设有这样一个列表:

[[t[0] for t in tagger.tag(s)] for s in corpus.sents()[:5]]
看起来像这样:

[['1'], ['Hermann', 'Hesse', 'Der', 'Steppenwolf'], ['Erzählung'], ['Vorwort', 'des', 'Herausgebers'],
['Dieses', 'Buch', 'enthält', 'die', 'uns', 'geblichenen', 'Aufzeichnungen', 'jenes', 'Mannes', ',',
'welchen', 'wir', 'mit', 'einem', 'Ausdruck', ',', 'den', 'er', 'selbst', 'mehrmals', 'gebrauchte', ',',
'den', '«', 'Steppenwolf', '»', 'nannten', '.']]
现在,我需要选择列表列表中包含此处列出的任何字符串的所有列表:

vds_nennen = ['nennen', 'nenne', 'nennst', 'nennt', 'nenne', 'nennest', 'nannte', 
'nanntest', 'nannten', 'nanntet', 'nennte', 'nenntest', 'nennten', 'nenntet', 'genannt'] 
因此,期望的输出是:

[['Dieses', 'Buch', 'enthält', 'die', 'uns', 'geblichenen', 'Aufzeichnungen', 
'jenes', 'Mannes', ',', 'welchen', 'wir', 'mit', 'einem', 'Ausdruck', ',', 'den',
'er', 'selbst', 'mehrmals', 'gebrauchte', ',', 'den', '«', 'Steppenwolf', '»', 
'nannten', '.']]
(因为列表列表中的最后一个列表包含
'nannten'
,而
vds_nennenen
列表也包含该列表)

我试图通过以下方式循环查看列表:

[[t[0] for t in tagger.tag(s)] for s in corpus.sents()[:5] if [vds for vds in vds_nennen] in s]
但什么也没有得到:

[]

提前为我在循环中的无知道歉。。。任何建议都将不胜感激。

您需要编写
if
表达式来使用
Any

[[t[0] for t in tagger.tag(s)] for s in corpus.sents()[:5] if any([vds in s for vds in vds_nennen])]
您还可以对原始列表进行后处理(称之为
tt


谢谢,但此解决方案返回
[]、[]、[]、[]、[]、['nannten']]
,因此:1。它返回所有列表(不符合条件的列表),但使其为空,并返回2。它将匹配条件的列表减少到单个字符串,这与期望的输出非常不同…@Gavrk I误解了您的原始代码;我认为您确实需要将
if
子句保留在原来的位置,然后将其重写为使用任意值。请参阅我的编辑。
[t for t in tt if any([vds in t for vds in vds_nennen])]