2010-02-17 15 views

Odpowiedz

1

Napisz funkcję pomocnika.

Oto wersja o długim numerze, ale jestem pewien, że istnieje sztuczka, która go skompresuje.

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

dodać także ten pomocnika:

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

i nazwać tak:

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

Ewentualnie można dodać funkcję do już instancja obiektu.

54

można zrobić coś takiego:

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

Niestety, nie można już przejść 'RO'. Musisz zdać markera i styl linii wartości jako parametry słów kluczowych:

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

Sztuką użyłem jest unpacking argument lists.

+6

Zwykle używam 'plt.plot (* np.transpose (a))' (gdzie nazwałem 'import numpy jako np'), co jest równoważne z tym, co zasugerowałeś. –

9

Jeśli używasz numpy tablicy można wyodrębnić przez osi:

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

dla list lub list będziesz potrzebować pomocnika, jak:

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

listowych

Wysoce sugeruję liberalne stosowanie spisanych pojęć. Nie tylko są one zwięzłe i potężne, ale także sprawiają, że kod jest bardzo czytelny. Należy unikać

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 rozpakowywanie:

spróbować czegoś takiego. To jest brzydkie.

Powiązane problemy