2016-08-12 18 views
0

私はリスト内包を理解するのをより良くしようとしています。リストのリストにキャストしたタプルのリストを使ってこのことを始めました。リスト内包表記でインデックス内の項目を抜き取ります

リストの理解では、最後のインデックスに2が含まれている最も内側のリストのインデックスから、どのように抜き出すことができますか?

results = [ 
    [ 
    [529L, u'wat', u'wat', 3L, 2], [530L, u'wat', u'wat', 3L, 1], [531L, u'wat', u'wat', 3L, 1] 
    ], [ 
    [533L, u'weeeee', u'weeeee', 3L, 1], [534L, u'weeeee', u'weeeee', 3L, 1] 
    ] 
] 

は次のようになります。

results = [ 
    [ 
    [530L, u'wat', u'wat', 3L, 1], [531L, u'wat', u'wat', 3L, 1] 
    ], [ 
    [533L, u'weeeee', u'weeeee', 3L, 1], [534L, u'weeeee', u'weeeee', 3L, 1] 
    ] 
] 
+1

を見ることができませんか?それは*最後の要素*として '2'を含むリストのリストの最初の要素を削除するにはどうすればいいですか?または、最後の要素が2である各要素のすべての要素を削除するか、または...を削除しますか? –

+0

@ JonClements私は最後のインデックスに '2'のあるすべての内部リストを削除すると思います。 –

+0

'' 'for''ループで書くだけなら、プロセスを見ることができますし、後ろ向き*を処理してリストの理解に変換する方が簡単かもしれません - 試してみてください楽しんで。私は比較のためにシーケンスの項目を抜き出すときに['' 'operator.itemgetter''''(https://docs.python.org/3/library/operator.html#operator.itemgetter)を使います: 'last_item = operator.itemgetter(-1);そうでない場合last_item(物)== 2'''' – wwii

答えて

2
results = [[x for x in lst if x[-1]!=2] for lst in results] 
0

このような何か:あなたの入力は、あなたの出力に対応する方法

results_not_ending_in_2 = [ 
    [inner_list for inner_list in outer_list if inner_list[-1] != 2] 
    for outer_list in results 
] 
関連する問題