2016-09-01 1 views
1

Ich habe eine Liste von Listen wie folgt aus:gespalten ein Element in der Liste der Listen neues Element

lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']] 

Ich mag jedes Element überprüfen und das zweite Element in [ ‚1_A‘, ‚1_C‘ abzulassen , '1_B']. Also, meine endgültige Ausgabe ist

lofl = [['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']] 

Ich versuchte Folgendes, aber es hat nicht funktioniert.

deflate = [i for i in tre_exr for j in i str(i).split(",")] 

Ich bekomme ungültige Syntax. Kann jemand vorschlagen, wo das Problem ist?

Vielen Dank im Voraus.

Arun

Antwort

2

Sie waren ziemlich nah dran, man muss nur irgendwie in einer überflüssigen i in der Liste Verständnis gemischt; auch am Ende (d. h. am Anfang des Listenverständnisses) wollen Sie das "innere" j, nicht das "äußere" i. Auch nicht notwendig str zu konvertieren:

[ j for i in tre_exr for j in i.split(",") ] 

Für Ihre gesamte Liste der Listen, haben Sie, dass in eine andere Liste Verständnis wickeln:

>>> lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']] 
>>> [[j for i in tre_exr for j in i.split(",")] for tre_exr in lofl] 
[['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']] 
1

Im irgendwie neu in Python so nahm diese ein wenig herauszufinden! Siehe unten für die prägnanteste Lösung, die mir einfällt.

import itertools 
lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']] 

new = [list(itertools.chain(*[c.split(',') for c in l])) for l in lofl] 

print new 

:)

1

Ich nehme an, dies ist der Weg zu gehen, wenn Sie eine „leicht zu lesen“ Lösung wollen.

lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']] 

result = [] 
for item in lofl: 
    x = [] 
    for i in item: 
     x += i.split(',') 
    result.append(x) 

>>> result 
[['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']] 
Verwandte Themen