2012-05-15 19 views
5

Tôi làm cách nào để viết mã sau đây chính xác hơn?Cách Pythonic và súc tích để xây dựng danh sách này?

scores = [] 
    for f in glob.glob(path): 
     score = read_score(f, Normalize = True) 
     scores.append(score) 

Tôi biết điều này có thể được viết bằng một hoặc hai dòng mà không sử dụng append, nhưng tôi là người mới sử dụng Python.

+4

'điểm = [read_score (f, Normalize = True) cho f trong glob.glob (đường dẫn)] '- đó là một sự hiểu biết danh sách đó không chính xác cùng một mô hình. – birryree

+0

Đó là kịch bản sử dụng cổ điển cho [list comprehensions] (http://docs.python.org/tutorial/datastructures.html#list-comprehensions). –

+0

Câu hỏi tiếp theo nhanh: Điều gì sẽ xảy ra nếu tôi muốn sắp xếp danh sách các tập tin lặp đi lặp lại? Nó không trực tiếp trả về một danh sách nhưng có thể lặp lại, vì vậy gọi glob.glob (path) .sort() đưa ra một lỗi. Nó vẫn có thể được thực hiện trong một dòng? – Frank

Trả lời

7

Ồ, tôi đã nhận nó trong khi duyệt một related question:

scores = [read_score(f, normalize=True) for f in glob.glob(path)] 
+1

sử dụng: 'được sắp xếp (glob.glob (đường dẫn))' – fraxel

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