Hướng dẫn python fitter - thợ săn trăn

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

Nội dung chính

  • 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.

Đăng nhập

Sử dụng filter() với một hàm

Sử dụng None có filter()

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 phn t được lc 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

Nội dung chính

Hàm filter() có 2 tham số:

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

Nội dung chính

print(list(filter(lambda x: x[0].lower() in 'aeiou', creature_names))) 

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.

interable: là các iterable cần lọc, có thể là set, list, tuple hoặc container.

Output

['Ashley', 'Olly']

Kết quả tương tự có thể đạt được bằng cách sử dụng một hàm ta xác định:

# 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)
0

Chức năng của ta

Các phn t được lc là: 1 a True 0
3 định nghĩa khái niệm mà ta sẽ thực hiện để lọc
# 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)
9 .

, kết quả sẽ như sau:

Output

['Ashley', 'Olly']

Nhìn chung,

Các nguyên âm được lc là: a e i o
8 hàm
Các nguyên âm được lc là: a e i o
8 đạt được kết quả tương tự với
Các nguyên âm được lc là: a e i o
1 như khi ta sử dụng một hàm thông thường. Sự cần thiết phải xác định một hàm thông thường tăng lên khi độ phức tạp của các biểu thức để lọc dữ liệu của ta tăng lên, điều này có khả năng thúc đẩy khả năng đọc tốt hơn trong mã của ta .

Sử dụng None có filter()

Ta có thể chuyển

Các phn t được lc là: 1 a True 0
8 làm đối số đầu tiên cho
Các nguyên âm được lc 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)
2

Trong đ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 lc là: a e i o
1 chức năng với
Các phn t được lc 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 phn t được lc 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)
4

Sau đó, ta bọc

filter(function, iterable) 
6 trong một hàm
Các nguyên âm được lc 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 lc 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 lc 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 lc là: a e i o
2 hoặc ta có thể sử dụng
Các nguyên âm được lc 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ả.
: Nếu ta không sử dụng
Các nguyên âm được lc 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 lc là: a e i o
2 hoặc ta có thể sử dụng
Các nguyên âm được lc 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 phn t được lc là: 1 a True 0
8 ta đã sử dụng
Các nguyên âm được lc 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 lc 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 lc 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 lc 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 lc 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 lc 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)
8

Mộ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 lc 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 lc là: a e i o
1 trong Python. Như vậy, bạn có thể sử dụng
Các nguyên âm được lc là: a e i o
1 với hàm của riêng mình, hàm
Các nguyên âm được lc là: a e i o
8 hoặc với
Các phn t được lc 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 lc 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 lc 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
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