2016-08-12 2 views
0

Ich versuche, besser zu verstehen Verständnis der Liste, und ich begann diese Sache mit einer Liste von Tupeln, die ich in eine Liste von Listen gegossen habe.Einen innersten Gegenstand nach seinem Index mit Listenverständnis zupfen

Mit List Verständnis, wie kann ich aus dem innersten Liste Index, der eine 2 im letzten Index enthält, herauszupfen?

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

wäre:

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

kann nicht sehen, wie Sie die Eingabe Ihrer Ausgabe entspricht? Ist es * Wie entferne ich das erste Element in einer Liste von Listen, die '2' als letztes Element * enthalten? Oder möchten Sie alle Elemente in jedem letzten entfernen, wo sein letztes Element 2 ist, oder ...? –

+0

@JonClements Ich denke, dass es alle inneren Listen mit einer '2' im letzten Index entfernt. –

+0

Wenn Sie es einfach in eine '' 'for''' Schleife schreiben, werden Sie in der Lage sein, den Prozess zu sehen, dann könnte es einfacher sein * rückwärts zu arbeiten * und es in ein Listenverständnis umwandeln - versuchen Sie es, es wird sei lustig. Ich möchte ['' operator.itemgetter'''] (https://docs.python.org/3/library/operator.html#operator.itemgetter) verwenden, wenn ich Elemente einer Sequenz zum Vergleich herauspicke: '' 'Letztes_Item = operator.itemgetter (-1); wenn nicht last_item (ding) == 2''' – wwii

Antwort

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

Etwas wie folgt aus:

results_not_ending_in_2 = [ 
    [inner_list for inner_list in outer_list if inner_list[-1] != 2] 
    for outer_list in results 
] 
Verwandte Themen