2016-11-06 8 views
1

の単語のリストは、l2の各タプルの最初のインデックスに存在するものがあればタプル全体を削除します。リスト内のネストされたループ

私のコード:

l = ['hi', 'thanks', 'thank', 'bye', 'ok', 'yes', 'okay'] 
l2 = [('hi how are u', 'doing great'), ('looking for me', 'please hold')] 
l3 = [k for k in l2 if not any(i in k[0] for i in l) ] 

何とかコードが動作しないと私はL3のために空のリストを取り戻します。

は私が単語のリストを取得するには

l3 = [('looking for me', 'please hold')] 
+1

lo ** ok ** ing for me –

答えて

4

スプリットk[0]をしたい:iが正確に単語と一致した場合に

[k for k in l2 if not any(i in k[0].split() for i in l)] 

この方法は、それをチェックします。

lのいずれかで開始し、その後、あなたがこれを行うことができていないk[0]かのようにも解釈できる:

[k for k in l2 if not k[0].startswith(tuple(l))] 
0

セットはメンバーシップのテストが容易になります。関数を使用してリストをフィルタリングします。

import operator 
first = operator.itemgetter(0 

l = ['hi', 'thanks', 'thank', 'bye', 'ok', 'yes', 'okay'] 
l2 = [('hi how are u', 'doing great'), ('looking for me', 'please hold')] 

def foo(t, l = set(l)): 
    t = set(first(t).split()) 
    return bool(l & t) 

l3 = [thing for thing in l2 if not foo(thing)] 
関連する問題