2017-03-01 9 views
0

リストの個々のリストから要素を比較する必要があります。たとえば、ここに私の2つのリストです:異なるサイズのリストの2つのリストを比較する

listing = [['tl.48', 'tl.49', 'tl.57'], ['tl.23', 'tl.45', 'tl.12']]; 
search = [['tl.48','tl.57']]; 

今、私の目標は、リストの各項目に検索で各アイテムを探して、二つのアイテム'tl.48'は、'tl.57'はその後、リスト内の項目と一致した場合、私はその項目からを選択することですリストを空のリストに追加します。 listing[0]は3要素のサイズを有し、search[0][0]およびsearch[0][1]は、listing[0][0]およびlisting[0][2]に存在する。別のリストにlisting[0]を追加して追加するにはどうすればいいですか? listing[0]のサイズが4で、search[0][0]search[0][1]がある場合は、listing[0]にありますが、新しいリストにはまだlisting[0]が追加されます。どうしたらいいですか?

ありがとうございました。

+1

私はあなたの説明を辿るのが難しいと感じます。もしあなたが期待される出力を与えたら、おそらくもっと簡単だろう... –

+0

追加はちょうど... 'my_list.append(my_new_element)'で終わる。それで何が間違っていますか? – Julien

答えて

1
[lst for lst in listing if all([True if term in lst else False for term in search[0]])] 

結果:[['tl.48', 'tl.49', 'tl.57']]

これを、listingの各listのために、チェックが各検索語がallこのような用語がある場合にのみ、それを付加し、listinある場合。

注:検索には単一のリストが含まれているので、search[0]を使用しています。単なる要素リストの場合は、searchを代わりに使用してください。 (同じ結果、異なる方法)にほぼ相当

:これは(searchlistingは、リストの両方のリストである)真のリストの比較になるだろうされている場合は

result = [] 
for lst in listing: 
    valid = True 
    for term in search[0]: 
     if term not in lst: 
      valid = False 
    if valid: 
     result.append(lst) 

、あなたは見つける必要がありますより強固なソリューションです。

+0

最初の行 'all(検索語[0]の用語のための最初の単語)'を簡略化することができます –

関連する問題