2010-02-17 9 views

Antwort

1

Schreiben Sie eine Hilfsfunktion.

Hier ist eine längliche Version, aber ich bin sicher, dass es einen Trick gibt, es zu komprimieren.

>>> def helper(lst): 
    lst1, lst2 = [], [] 
    for el in lst: 
     lst1.append(el[0]) 
     lst2.append(el[1]) 
    return lst1, lst2 

>>> 
>>> helper([[1,2],[3,4],[5,6]]) 
([1, 3, 5], [2, 4, 6]) 
>>> 

Auch diese Helfer hinzu:

def myplot(func, lst, flag): 
    return func(helper(lst), flag) 

Und es wie so nennen:

myplot(plt.plot, [[1,2],[3,4],[5,6]], 'ro') 

Alternativ Sie eine Funktion zu einem bereits instanzierte Objekt hinzufügen könnte.

54

Sie können etwas tun:

a=[[1,2],[3,3],[4,4],[5,2]] 
plt.plot(*zip(*a)) 

Leider kann man nicht mehr 'ro' übergeben. Sie müssen Marker und Linienstil Werte als Schlüsselwort-Parameter übergeben:

a=[[1,2],[3,3],[4,4],[5,2]] 
plt.plot(*zip(*a), marker='o', color='r', ls='') 

Der Trick, den ich verwenden unpacking argument lists ist.

+6

Normalerweise verwende ich 'plt.plot (* np.transpose (a))' (wo ich 'import numpy als np' genannt habe), was dem entspricht, was Sie vorgeschlagen haben. –

9

Wenn Sie numpy Array verwenden Sie Achse extrahieren könnte:

a = array([[1,2],[3,3],[4,4],[5,2]]) 
plot(a[:,0], a[:,1], 'ro') 

Für Listen oder Listen Sie einige Helfer benötigen, wie:

a = [[1,2],[3,3],[4,4],[5,2]] 
plot(*sum(a, []), marker='o', color='r') 
8

Listenkomprehensionen

Ich schlage die liberale Anwendung von Listenergänzungen vor. Sie sind nicht nur kurz und bündig, sie machen auch Ihren Code sehr lesbar.

versuchen, etwas wie folgt aus:

list_of_lists = [[1,2],[3,3],[4,4],[5,2]]  
x_list = [x for [x, y] in list_of_lists] 
y_list = [y for [x, y] in list_of_lists] 

plt.plot(x_list, y_list) 

Argument auspacken sollte vermieden werden. Es ist hässlich.

Verwandte Themen