Hàm filter() trong Python lọc ra các phần tử theo điều kiện của hàm func từ list, dict… Hàm này sẽ chỉ trả về những giá trị mà điều kiện trong func chấp nhận (có nghĩa là True). Cú pháp của hàm filter() như thế nào, nó có những tham số gì và cách sử dụng ra sao? Mời bạn đọc theo dõi. Nội dung chính ShowShow - Các tham số của hàm filter()
- Ví dụ : Hàm filter() hoạt động thế nào?
- Ví dụ 2: filter() hoạt động không cần func.
- Đăng nhập
- Sử dụng filter() với một hàm
- Sử dụng None có filter()
- Sử dụng filter() với Danh sách Từ điển
- Kết luận
filter(func, iterable)
Các tham số của hàm filter()Ví dụ : Hàm filter() hoạt động thế nào? - Ví dụ 2: filter() hoạt động không cần func.
- Đăng nhập
Ví dụ : Hàm filter() hoạt động thế nào?# danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']
if(alphabet in nguyenam):
return True
else:
return False
filterNguyenam = filter(filterNguyenam, alphabet)
print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam)
Ví dụ 2: filter() hoạt động không cần func. Các nguyên âm được lọc là: a e i o
Đăng nhập Sử dụng filter() với một hàm Ví dụ 2: filter() hoạt động không cần func.# random list
# viết bởi Quantrimang.com
randomList = [1, 'a', 0, False, True, '0']
filteredList = filter(None, randomList)
print('Các phần tử được lọc là:')
for element in filteredList:
print(element)
Ví dụ 2: filter() hoạt động không cần func. Các phần tử được lọc là: 1 a True 0
Đăng nhập Đăng nhập Sử dụng filter() với một hàm Sử dụng None có filter()
Sử dụng filter() với Danh sách Từ điển filter(function, iterable)
Kết luận Hàm filter() có 2 tham số: func: là hàm điều kiện để kiểm tra các phần tử trong interable là đúng hay sai, func chỉ có thể trả về True hoặc False. Sử dụng filter() với một hàm Sử dụng None có filter() Sử dụng filter() với Danh sách Từ điển filter(lambda item: item[] expression, iterable)
Kết luận creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie']
Hàm filter() có 2 tham số: print(list(filter(lambda x: x[0].lower() in 'aeiou', creature_names)))
func: là hàm điều kiện để kiểm tra các phần tử trong interable là đúng hay sai, func chỉ có thể trả về True hoặc False. interable: là các iterable cần lọc, có thể là set, list, tuple hoặc container. Chạy chương trình, kết quả trả về là: Output ['Ashley', 'Olly']
Ở đây, ta liệt kê một danh sách các chữ cái và cần lọc ra các nguyên âm trong đó. # danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']
if(alphabet in nguyenam):
return True
else:
return False
filterNguyenam = filter(filterNguyenam, alphabet)
print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam) 0Bạn có thể sử dụng vòng lặp for để kiểm tra từng thành phần trong danh sách và lưu trữ nó sang một danh sách khác, nhưng sử dụng Python thì quá trình này sẽ dễ dàng hơn và nhanh hơn bằng cách dùng phương thức filter(). Ở đây, ta có một danh sách ngẫu nhiên gồm cả số, chuỗi và boolean gọi là randomList. Chúng ta truyền randomList vào hàm filter() với tham số đầu tiên (func) là None. Lúc này, hàm tự mặc định trở thành Identity function, vậy nên ta nhận được các phần tử TRUE là 1, a, True và ‘0’ (‘0’ ở dạng chuỗi). Output ['Ashley', 'Olly']
Thứ sáu, 24/07/2020 | 00:00 GMT+7 Sử dụng None có filter() Ta có thể chuyển Các phần tử được lọc là: 1 a True 0 8 làm đối số đầu tiên cho Các nguyên âm được lọc là: a e i o 1
để trình vòng lặp được trả về lọc ra bất kỳ giá trị nào mà Python coi là "sai". Nói chung, Python coi bất kỳ thứ gì có độ dài bằng filter(function, iterable) 0 (chẳng hạn như danh sách trống hoặc chuỗi trống) hoặc số tương đương với filter(function, iterable) 0 là sai, do đó, việc sử dụng thuật ngữ “falsy”. Trong trường hợp sau, ta muốn lọc danh sách của bạn để chỉ hiển thị số bể tại bể cá của ta : # danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']
if(alphabet in nguyenam):
return True
else:
return False
filterNguyenam = filter(filterNguyenam, alphabet)
print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam) 2Trong đoạn mã này, ta có một danh sách chứa các số nguyên , dãy trống và giá trị boolean . # danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']
if(alphabet in nguyenam):
return True
else:
return False
filterNguyenam = filter(filterNguyenam, alphabet)
print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam) 3 Ta sử dụng
các Các nguyên âm được lọc là: a e i o 1 chức năng với Các phần tử được lọc là: 1 a True 0 8 và vượt qua trong filter(function, iterable) 4 danh sách như iterable của ta . Vì ta đã chuyển Các phần tử được lọc là: 1 a True 0 8 làm đối số đầu tiên, ta sẽ kiểm tra xem các mục trong danh sách của ta có bị coi là sai hay không.# danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']
if(alphabet in nguyenam):
return True
else:
return False
filterNguyenam = filter(filterNguyenam, alphabet)
print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam) 4Sau đó, ta bọc filter(function, iterable) 6 trong một hàm Các nguyên âm được lọc là: a e i o 4 để nó trả về một danh sách cho các filter(function, iterable) 6 khi ta in. Ở đây kết quả chỉ hiển thị các số nguyên. Tất cả các mục được đánh giá là # random list
# viết bởi Quantrimang.com
randomList = [1, 'a', 0, False, True, '0']
filteredList = filter(None, randomList)
print('Các phần tử được lọc là:')
for element in filteredList:
print(element) 0 , tương đương với độ dài bằng filter(function, iterable) 0 , đã bị loại bỏ bởi Các nguyên âm được lọc là: a e i o 1 :# danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']
if(alphabet in nguyenam):
return True
else:
return False
filterNguyenam = filter(filterNguyenam, alphabet)
print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam) 5
Lưu ý : Nếu ta không sử dụng Các nguyên âm được lọc là: a e i o 4 và print filter(function, iterable) 6 ta sẽ nhận được một đối tượng filter giống như sau: filter(lambda item: item[] expression, iterable) 4 . Đối tượng bộ lọc là một đối tượng có thể lặp lại, vì vậy ta có thể lặp lại nó với Các nguyên âm được lọc là: a e i o 2 hoặc ta có thể sử dụng Các nguyên âm được lọc là: a e i o 4 để biến nó thành một danh sách, ta đang làm ở đây vì đó là một cách tốt để xem lại kết quả.
Với Các phần tử được lọc là: 1 a True 0 8 ta đã sử dụng Các nguyên âm được lọc là: a e i o 1 để nhanh chóng xóa các mục khỏi danh sách bị coi là sai. Sử dụng filter() với Danh sách Từ điển Khi ta có cấu trúc dữ liệu phức tạp hơn, ta vẫn có thể sử dụng Các nguyên âm được lọc là: a e i o 1 để đánh giá từng mục. Ví dụ: nếu ta có một danh sách các từ điển, ta không chỉ muốn lặp lại từng mục trong danh sách - một trong các từ điển - mà ta còn có thể cần lặp lại từng cặp khóa: giá trị trong từ điển để đánh giá tất cả dữ liệu. Ví dụ: giả sử ta có danh sách từng sinh vật trong bể cá của bạn cùng với các chi tiết khác
nhau về từng sinh vật trong số chúng: # danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']
if(alphabet in nguyenam):
return True
else:
return False
filterNguyenam = filter(filterNguyenam, alphabet)
print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam) 6 Ta muốn lọc dữ liệu này bằng một chuỗi tìm kiếm mà ta cung cấp cho hàm. Để có Các nguyên âm được lọc là: a e i o 1 truy cập từng từ điển và từng mục trong từ điển, ta xây dựng một hàm lồng nhau, như sau:# danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']
if(alphabet in nguyenam):
return True
else:
return False
filterNguyenam = filter(filterNguyenam, alphabet)
print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam) 7 Ta định nghĩa một creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie'] 1 chức năng mà mất creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie'] 2 và creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie'] 3 như thông số. Trong creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie'] 1 ta chuyển creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie'] 5 làm hàm để Các nguyên âm được lọc là: a e i o 1 . Hàm creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie'] 1 sẽ trả về trình lặp kết quả từ Các nguyên âm được lọc là: a e i o 1 . creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie'] 5 lấy # random list
# viết bởi Quantrimang.com
randomList = [1, 'a', 0, False, True, '0']
filteredList = filter(None, randomList)
print('Các phần tử được lọc là:')
for element in filteredList:
print(element) 6 làm đối số, đại diện cho một mục trong
danh sách của ta (nghĩa là một từ điển duy nhất). Tiếp theo Các nguyên âm được lọc là: a e i o 2 vòng lặp truy cập các giá trị trong mỗi phím: cặp giá trị trong từ điển của ta và sau đó sử dụng một tuyên bố có điều kiện để kiểm tra xem các creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie'] 3 là trong print(list(filter(lambda x: x[0].lower() in 'aeiou', creature_names))) 3 , đại diện cho một giá trị. Giống như trong các ví dụ trước của ta , nếu biểu thức đánh giá là print(list(filter(lambda x: x[0].lower() in 'aeiou', creature_names))) 4 , hàm sẽ thêm mục vào đối tượng bộ lọc. Kết quả sẽ trả về sau khi hàm creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie'] 1 hoàn thành. Ta đặt vị trí print(list(filter(lambda x: x[0].lower() in 'aeiou', creature_names))) 6 bên ngoài vòng lặp của ta để
nó kiểm tra mọi mục trong mỗi từ điển, thay vì quay lại sau khi kiểm tra từ điển đầu tiên. Ta gọi creature_names = ['Sammy', 'Ashley', 'Jo', 'Olly', 'Jackie', 'Charlie'] 1 với danh sách các từ điển của ta và chuỗi tìm kiếm mà ta muốn tìm các kết quả phù hợp:# danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']
if(alphabet in nguyenam):
return True
else:
return False
filterNguyenam = filter(filterNguyenam, alphabet)
print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam) 8Một khi các chức năng hoàn thành ta có đối tượng bộ lọc của ta được lưu trữ trong print(list(filter(lambda x: x[0].lower() in 'aeiou', creature_names))) 8 biến, mà ta biến thành một danh sách và in:# danh sách chữ cái
alphabet = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
# lọc nguyên âm
# viết bởi Quantrimang.com
def filterNguyenam(alphabet):
nguyenam = ['a', 'e', 'i', 'o', 'u']
if(alphabet in nguyenam):
return True
else:
return False
filterNguyenam = filter(filterNguyenam, alphabet)
print('Các nguyên âm được lọc là:')
for nguyenam in filterNguyenam:
print(nguyenam) 9 Ta sẽ nhận được kết quả sau từ chương trình này: Các nguyên âm được lọc là: a e i o 0 Ta đã lọc danh sách các từ điển với chuỗi tìm kiếm print(list(filter(lambda x: x[0].lower() in 'aeiou', creature_names))) 9 . Ta có thể
thấy rằng ba từ điển bao gồm một số xe tăng với print(list(filter(lambda x: x[0].lower() in 'aeiou', creature_names))) 9 đã được trả lại. Sử dụng chức năng lồng nhau của riêng ta cho phép ta truy cập mọi mục và kiểm tra hiệu quả từng mục đối với chuỗi tìm kiếm. Kết luận Trong hướng dẫn này, ta đã học các cách khác nhau để sử dụng hàm Các nguyên âm được lọc là: a e i o 1 trong Python. Như vậy, bạn có thể sử dụng Các nguyên âm được lọc là: a e i o 1 với hàm của riêng mình, hàm Các nguyên âm được lọc là: a e i o 8 hoặc với Các phần tử được lọc là: 1 a True 0 8 để lọc các mục có độ phức tạp khác nhau của cấu trúc dữ liệu. Mặc dù trong
hướng dẫn này, ta đã in kết quả từ Các nguyên âm được lọc là: a e i o 1 ngay lập tức ở định dạng danh sách, nhưng có khả năng trong chương trình của ta , ta sẽ sử dụng đối tượng Các nguyên âm được lọc là: a e i o 1 trả về và thao tác thêm với dữ liệu. Nếu bạn muốn tìm hiểu thêm về Python, hãy xem loạt bài Cách viết mã trong Python 3 và trang chủ đề Python của ta .
Tags:
Các tin liên quan Cách sử dụng module pathlib để thao tác đường dẫn hệ thống tệp trong Python 3 2020-07-15 Cách tạo Slackbot
bằng Python trên Ubuntu 20.04 2020-06-30 Cách sử dụng ThreadPoolExecutor trong Python 3 2020-06-23 Cách sử dụng module sqlite3 trong Python 3 2020-06-02 Cách thiết lập notebook Jupyter với Python 3 trên Ubuntu 20.04 và Kết nối qua Đường hầm SSH 2020-05-19 Cách cài đặt Phân phối Python Anaconda trên Ubuntu 20.04 [Khởi động nhanh] 2020-05-19 Cách cài đặt Phân phối Python Anaconda trên Ubuntu 20.04 2020-05-06 Cách cài đặt Python 3 và thiết
lập môi trường lập trình trên server Ubuntu 20.04 2020-04-24 Cách cài đặt Python 3 và thiết lập môi trường lập trình trên server Ubuntu 18.04 2020-04-24 Cách cài đặt Python 3 và thiết lập môi trường lập trình trên Ubuntu 20.04 [Quickstart] 2020-04-24
|