2017-02-16 23 views
-3

Ich versuche, alle verschachtelten Listen in separate Listen zu teilen. Zum Beispiel: all_v_100_history = [[2,4],[2,1,5],[6,3,5]], und ich möchte auf einzelne Teil-Listen trennen: l1=[2,4], l2=[2,1,5], l3=[6,3,5] ... Die Anzahl der verschachtelten Listen ist j, so ist mein Ziel all_v_100_history zu j Anzahl der Teil-Listen zu trennen.Python separate Unterlisten von verschachtelten Listen

+1

Warum wollen Sie trennen, wenn Sie es mit 'all_v_100_history [n] erhalten können' Notation. – MYGz

+2

Warum auf Gottes grüner Erde würdest du das tun wollen? – TigerhawkT3

+0

Was ist der Unterschied zwischen diesem und dem Kopieren der Liste? Oder mit der alten Liste? – rassar

Antwort

0

dies ist eine seltsame Frage, und Sie sollten wahrscheinlich dies nicht tun, aber hier geht:

lcls = locals() 
for i in range(len(all_v_100_history)): 
    lcls['l' + str(i)] = all_v_100_history[i] 

die „magische“ Teil hier ist locals() mit dem Sie die lokale Variable Hash-Tabelle gibt, sie im Stich gelassen Wenn Sie die Tasten dynamisch aufrufen, müssen Sie nicht einmal die Variablen vordefinieren, um sie zuzuweisen. Am Ende werden Sie mit einer Reihe von l1, l2 ... lj Variablen im lokalen Kontext enden

Das obige wird nicht funktionieren innerhalb einer Funktion, aber es gibt einen Hack für das, was im Interesse der Vollständigkeit hinzugefügt wird (seine schlechte Codierung verwenden, um dies nicht)

def my_func(all_v_100_history): 
    lcls = locals() 
    for i in range(len(all_v_100_history)): 
     lcls['l' + str(i)] = all_v_100_history[i] 
    return #return whatever it is you want to return 
    exec "" #this is the magic part 

funktioniert dies nur in python 2.

+1

Das ist eine schreckliche Idee. – TigerhawkT3

+1

Es funktioniert auch nicht ** überhaupt ** ... setzen Sie dies in eine Funktion und versuchen Sie dann zu "print (l1)" ... – donkopotamus

+0

@donkopotamus interessant, es funktioniert wirklich nicht innerhalb einer Funktion – Nullman

Verwandte Themen