2015-03-21 16 views
7

Tôi viết một danh sách hiểu bằng Python:Tôi làm cách nào để thêm danh sách vào danh sách hiểu?

[2 * x if x > 2 else add_nothing_to_list for x in some_list] 

tôi cần những "add_nothing_to_list" phần (phần khác của logic) để theo nghĩa đen không có gì.

Python có cách nào để làm điều này không? Cụ thể, có cách để nói a.append(nothing) sẽ để lại a không thay đổi. Đây có thể là một tính năng hữu ích để viết mã tổng quát.

Trả lời

10

Chỉ cần di chuyển điều kiện để người cuối cùng

[2 * x for x in some_list if x > 2] 

Trích dẫn các List Comprehension documentation,

Một danh sách hiểu bao gồm dấu ngoặc chứa một biểu thức tiếp theo là một khoản for, sau đó không hay nhiều for hoặc if mệnh đề. Kết quả sẽ là một danh sách mới do đánh giá biểu thức trong ngữ cảnh của các điều khoản forif theo sau.

Trong trường hợp này, khái niệm là 2 * x và sau đó một for tuyên bố, for x in some_list, tiếp theo là một tuyên bố if, if x > 2.

hiểu này có thể được hiểu như sau

result = [] 
for x in some_list: 
    if x > 2: 
     result.append(x) 
Các vấn đề liên quan