2010-09-04 45 views

Trả lời

57
filter(r.match, list) 
+0

Trên thực tế, comprehensions danh sách thường được ưa thích hơn các cấu trúc chức năng như bộ lọc, giảm, lambda vv –

+22

@ Ivo : Chúng thường được ưa thích vì chúng thường rõ ràng hơn và thường ngắn gọn hơn. Tuy nhiên trong trường hợp này, phiên bản 'filter' là hoàn toàn rõ ràng và có ít tiếng ồn hơn nhiều. – sepp2k

32

Full Ví dụ:

import re 
mylist = ["dog", "cat", "wildcat", "thundercat", "cow", "hooo"] 
r = re.compile(".*cat") 
newlist = filter(r.match, mylist) 
print str(newlist) 

Prints:

['cat', 'wildcat', 'thundercat'] 
+3

Xin chào, Khi tôi chạy mã trên, tôi nhận được '<đối tượng lọc tại 0x1057acda0>' Tôi đang làm gì sai? – Joshua

+1

Theo tài liệu python (trăn 2.7.12): https://docs.python.org/2/library/functions.html#filter bộ lọc trả về một danh sách không phải là một đối tượng. Bạn cũng có thể kiểm tra mã đó: https://repl.it/X3G/5786 (chỉ cần nhấn chạy) – Mercury

+1

Cảm ơn bạn. Tôi đang sử dụng Python 3.5.2 trên máy Mac. Tôi đã thử liên kết của bạn. Tất nhiên nó hoạt động, mặc dù không chắc chắn tại sao tôi nhận được thông điệp đó. Tôi thậm chí đã xóa 'str' vì' filter' trả về một danh sách, không có kết quả ... – Joshua

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