2010-02-17 23 views

Trả lời

1

Viết chức năng trợ giúp.

Đây là phiên bản dài, nhưng tôi chắc chắn có một mẹo để nén nó.

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

Ngoài ra thêm helper này:

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

Và gọi nó như vậy:

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

Ngoài ra bạn có thể thêm một chức năng để một đối tượng đã khởi tạo.

54

Bạn có thể làm một cái gì đó như thế này:

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

Thật không may, bạn có thể không còn vượt qua 'ro'. Bạn phải chuyển giá trị kiểu đánh dấu và kiểu đường như thông số từ khóa:

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

Bí quyết tôi đã sử dụng là unpacking argument lists.

+6

Tôi thường sử dụng 'plt.plot (* np.transpose (a))' (nơi tôi đã gọi là 'nhập gọn gàng như np'), tương đương với những gì bạn đã đề xuất. –

9

Nếu bạn đang sử dụng mảng NumPy bạn có thể trích xuất bằng cách trục:

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

Đối với danh sách hoặc danh sách bạn sẽ cần một số trợ giúp, như:

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

danh sách comprehensions

Tôi đánh giá cao đề xuất ứng dụng tự do của việc hiểu danh sách. Không chỉ là chúng có sức mạnh và mạnh mẽ, chúng có xu hướng làm cho mã của bạn trở nên dễ đọc.

Hãy thử một cái gì đó như thế này:

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) 

Luận giải nén nên tránh. Nó xấu.

Các vấn đề liên quan