Làm cách nào để lọc dữ liệu văn bản trong python?

Hàm

['a', 'e', 'i', 'o']
12 trích xuất các phần tử từ một iterable [list, tuple, v.v. ] mà hàm trả về
['a', 'e', 'i', 'o']
13

Thí dụ

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# returns True if number is even
def check_even[number]:
    if number % 2 == 0:
          return True  

    return False

# Extract elements from the numbers list for which check_even[] returns True even_numbers_iterator = filter[check_even, numbers]

# converting to list even_numbers = list[even_numbers_iterator] print[even_numbers] # Output: [2, 4, 6, 8, 10]

bộ lọc[] Cú pháp

Cú pháp của nó là

filter[function, iterable]

bộ lọc [] Đối số

Hàm

['a', 'e', 'i', 'o']
12 nhận hai đối số

bộ lọc[] Giá trị trả về

Hàm

['a', 'e', 'i', 'o']
12 trả về một trình vòng lặp

Ghi chú. Bạn có thể dễ dàng chuyển đổi các trình vòng lặp thành các chuỗi như danh sách, bộ dữ liệu, chuỗi, v.v.

ví dụ 1. Hoạt động của bộ lọc[]

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]

đầu ra

['a', 'e', 'i', 'o']

Ở đây, hàm

['a', 'e', 'i', 'o']
12 chỉ trích xuất các chữ cái nguyên âm từ danh sách
filter[function, iterable]
3. Đây là cách mã này hoạt động

  • Mỗi phần tử của danh sách
    filter[function, iterable]
    3 được chuyển đến hàm
    filter[function, iterable]
    5
  • Nếu
    filter[function, iterable]
    5 trả về
    ['a', 'e', 'i', 'o']
    13, phần tử đó sẽ được trích xuất nếu không nó sẽ bị lọc ra

Ghi chú. Cũng có thể lọc danh sách bằng vòng lặp, tuy nhiên, sử dụng hàm

['a', 'e', 'i', 'o']
12 sẽ sạch hơn nhiều

ví dụ 2. Sử dụng Hàm Lambda Bên trong bộ lọc[]

________số 8

đầu ra

[2, 4, 6]

Ở đây, chúng tôi đã chuyển trực tiếp một hàm lambda bên trong

['a', 'e', 'i', 'o']
12

Hàm lambda của chúng tôi trả về

['a', 'e', 'i', 'o']
13 cho các số chẵn. Do đó, hàm
['a', 'e', 'i', 'o']
12 trả về một iterator chỉ chứa các số chẵn

ví dụ 3. Sử dụng Không có chức năng Bên trong bộ lọc[]

filter[function, iterable]
0

đầu ra

filter[function, iterable]
1

Khi

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
2 được sử dụng làm đối số đầu tiên cho hàm
['a', 'e', 'i', 'o']
12, tất cả các phần tử là giá trị trung thực [cung cấp cho
['a', 'e', 'i', 'o']
13 nếu được chuyển đổi thành boolean] sẽ được trích xuất

filter[function, iterable]
34 của Python là một chức năng tích hợp sẵn cho phép bạn xử lý một lần lặp và trích xuất các mục thỏa mãn một điều kiện nhất định. Quá trình này thường được gọi là hoạt động lọc. Với
filter[function, iterable]
34, bạn có thể áp dụng chức năng lọc cho một lần lặp và tạo một lần lặp mới với các mục thỏa mãn điều kiện hiện có. Trong Python,
filter[function, iterable]
34 là một trong những công cụ bạn có thể sử dụng để lập trình chức năng

Trong hướng dẫn này, bạn sẽ học cách

  • Sử dụng
    filter[function, iterable]
    34 của Python trong mã của bạn
  • Trích xuất các giá trị cần thiết từ các lần lặp của bạn
  • Kết hợp
    filter[function, iterable]
    34 với các công cụ chức năng khác
  • Thay thế
    filter[function, iterable]
    34 bằng nhiều công cụ Pythonic hơn

Với kiến ​​thức này, bạn sẽ có thể sử dụng

filter[function, iterable]
34 một cách hiệu quả trong mã của mình. Ngoài ra, bạn có thể lựa chọn sử dụng khả năng hiểu danh sách hoặc biểu thức trình tạo để viết thêm mã Pythonic và có thể đọc được

Để hiểu rõ hơn về

filter[function, iterable]
34, bạn nên có một số kiến ​​thức trước đây về iterables, vòng lặp
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
12, hàm và hàm
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
13

Tiền thưởng miễn phí. 5 Suy nghĩ về Làm chủ Python, một khóa học miễn phí dành cho các nhà phát triển Python cho bạn thấy lộ trình và tư duy mà bạn sẽ cần để đưa các kỹ năng Python của mình lên một tầm cao mới

Mã hóa với phong cách chức năng trong Python

Lập trình hàm là một mô hình thúc đẩy việc sử dụng các hàm để thực hiện hầu hết mọi tác vụ trong chương trình. Một kiểu chức năng thuần túy dựa trên các chức năng không sửa đổi các đối số đầu vào của chúng và không thay đổi trạng thái của chương trình. Họ chỉ lấy một nhóm đối số cụ thể và trả về cùng một kết quả mỗi lần. Các loại chức năng này được gọi là chức năng thuần túy

Trong lập trình hàm, các hàm thường hoạt động trên các mảng dữ liệu, biến đổi chúng và tạo ra các mảng mới với các tính năng bổ sung. Có ba hoạt động cơ bản trong lập trình chức năng

  1. Ánh xạ áp dụng chức năng chuyển đổi cho một lần lặp và tạo ra một lần lặp mới gồm các mục đã chuyển đổi
  2. Lọc áp dụng một vị từ hoặc hàm có giá trị Boolean cho một lần lặp và tạo một lần lặp mới chứa các mục thỏa mãn điều kiện Boolean
  3. Việc giảm áp dụng hàm giảm cho một lần lặp và trả về một giá trị tích lũy duy nhất

Python không bị ảnh hưởng nhiều bởi các ngôn ngữ chức năng mà bởi các ngôn ngữ bắt buộc. Tuy nhiên, nó cung cấp một số tính năng cho phép bạn sử dụng kiểu chức năng

  • chức năng ẩn danh
  • Hàm
    letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
    
    # a function that returns True if letter is vowel
    def filter_vowels[letter]:
        vowels = ['a', 'e', 'i', 'o', 'u']
        return True if letter in vowels else False
    
    

    filtered_vowels = filter[filter_vowels, letters]

    # converting to tuple vowels = tuple[filtered_vowels] print[vowels]
    14
  • Hàm
    filter[function, iterable]
    34
  • Hàm
    letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
    
    # a function that returns True if letter is vowel
    def filter_vowels[letter]:
        vowels = ['a', 'e', 'i', 'o', 'u']
        return True if letter in vowels else False
    
    

    filtered_vowels = filter[filter_vowels, letters]

    # converting to tuple vowels = tuple[filtered_vowels] print[vowels]
    16

Các hàm trong Python là các đối tượng hạng nhất, có nghĩa là bạn có thể chuyển chúng xung quanh như bạn làm với bất kỳ đối tượng nào khác. Bạn cũng có thể sử dụng chúng làm đối số và trả về giá trị của các hàm khác. Các hàm chấp nhận các hàm khác làm đối số hoặc hàm trả về [hoặc cả hai] được gọi là hàm bậc cao hơn, đây cũng là một tính năng mong muốn trong lập trình hàm

Trong hướng dẫn này, bạn sẽ tìm hiểu về

filter[function, iterable]
34. Chức năng tích hợp này là một trong những công cụ chức năng phổ biến hơn của Python

Loại bỏ các quảng cáo

Hiểu vấn đề lọc

Giả sử bạn cần xử lý một danh sách các số và trả về một danh sách mới chỉ chứa những số lớn hơn

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
18. Một cách nhanh chóng để tiếp cận vấn đề này là sử dụng vòng lặp
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
12 như thế này

>>>

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
9

Vòng lặp trong

['a', 'e', 'i', 'o']
00 lặp qua
['a', 'e', 'i', 'o']
01 và lưu mọi số lớn hơn
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
18 trong
['a', 'e', 'i', 'o']
03. Câu lệnh điều kiện lọc ra các số âm và
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
18. Loại chức năng này được gọi là lọc

Hoạt động lọc bao gồm kiểm tra từng giá trị trong một lần lặp với hàm vị ngữ và chỉ giữ lại những giá trị mà hàm tạo ra kết quả đúng. Các thao tác lọc khá phổ biến trong lập trình nên hầu hết các ngôn ngữ lập trình đều cung cấp các công cụ để tiếp cận chúng. Trong phần tiếp theo, bạn sẽ tìm hiểu về cách lọc các lần lặp của Python

Bắt đầu với
filter[function, iterable]
34 của Python

Python cung cấp một hàm tích hợp thuận tiện,

filter[function, iterable]
34, tóm tắt logic đằng sau các hoạt động lọc. Đây là chữ ký của nó

['a', 'e', 'i', 'o']
7

Đối số đầu tiên,

['a', 'e', 'i', 'o']
07, phải là hàm một đối số. Thông thường, bạn cung cấp một hàm vị từ [có giá trị Boolean] cho đối số này. Nói cách khác, bạn cung cấp một hàm trả về
['a', 'e', 'i', 'o']
08 hoặc
['a', 'e', 'i', 'o']
09 theo một điều kiện cụ thể

['a', 'e', 'i', 'o']
07 này đóng vai trò là hàm quyết định, còn được gọi là hàm lọc, vì nó cung cấp các tiêu chí để lọc ra các giá trị không mong muốn khỏi đầu vào có thể lặp lại và để giữ các giá trị mà bạn muốn trong kết quả có thể lặp lại. Lưu ý rằng thuật ngữ giá trị không mong muốn đề cập đến những giá trị được đánh giá là sai khi
filter[function, iterable]
34 xử lý chúng bằng cách sử dụng
['a', 'e', 'i', 'o']
07

Ghi chú. Đối số đầu tiên của

filter[function, iterable]
34 là một đối tượng hàm, có nghĩa là bạn cần truyền một hàm mà không gọi nó bằng một cặp dấu ngoặc đơn

Đối số thứ hai,

filter[function, iterable]
54, có thể chứa bất kỳ Python iterable nào, chẳng hạn như danh sách, bộ dữ liệu hoặc tập hợp. Nó cũng có thể chứa các đối tượng trình tạo và trình lặp. Một điểm quan trọng liên quan đến
filter[function, iterable]
34 là nó chỉ chấp nhận một
filter[function, iterable]
54

Để thực hiện quá trình lọc,

filter[function, iterable]
34 áp dụng
['a', 'e', 'i', 'o']
07 cho mọi mục của
filter[function, iterable]
54 trong một vòng lặp. Kết quả là một trình vòng lặp mang lại các giá trị của
filter[function, iterable]
54 mà
['a', 'e', 'i', 'o']
07 trả về một giá trị thực. Quá trình không sửa đổi đầu vào ban đầu có thể lặp lại

filter[function, iterable]
34 được viết bằng C và được tối ưu hóa cao, nên vòng lặp ẩn bên trong của nó có thể hiệu quả hơn vòng lặp
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
12 thông thường về thời gian thực hiện. Hiệu quả này được cho là lợi thế quan trọng nhất của việc sử dụng hàm trong Python

Ưu điểm thứ hai của việc sử dụng

filter[function, iterable]
34 qua một vòng lặp là nó trả về một đối tượng
filter[function, iterable]
65, là một trình vòng lặp mang lại các giá trị theo yêu cầu, thúc đẩy chiến lược đánh giá lười biếng. Việc trả lại một trình vòng lặp làm cho bộ nhớ của
filter[function, iterable]
34 hiệu quả hơn so với vòng lặp
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
12 tương đương

Ghi chú. Trong Python 2. x,

filter[function, iterable]
34 trả về đối tượng
filter[function, iterable]
69. Hành vi này đã thay đổi trong Python 3. x. Bây giờ, hàm trả về một đối tượng
filter[function, iterable]
65, là một trình lặp tạo ra các mục theo yêu cầu. Trình lặp Python nổi tiếng là bộ nhớ hiệu quả

Trong ví dụ của bạn về số dương, bạn có thể sử dụng

filter[function, iterable]
34 cùng với hàm vị từ thuận tiện để trích xuất các số mong muốn. Để viết mã vị ngữ, bạn có thể sử dụng hàm
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
13 hoặc hàm do người dùng định nghĩa

>>>

filter[function, iterable]
3

Trong ví dụ đầu tiên, bạn sử dụng hàm

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
13 cung cấp chức năng lọc. Cuộc gọi đến
filter[function, iterable]
34 áp dụng hàm
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
13 đó cho mọi giá trị trong
['a', 'e', 'i', 'o']
01 và lọc ra các số âm và
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
18. Vì
filter[function, iterable]
34 trả về một trình lặp, bạn cần gọi
filter[function, iterable]
19 để sử dụng trình vòng lặp và tạo danh sách cuối cùng

Ghi chú. Vì

filter[function, iterable]
34 là một chức năng tích hợp, bạn không cần phải nhập bất kỳ thứ gì để có thể sử dụng nó trong mã của mình

Trong ví dụ thứ hai, bạn viết

filter[function, iterable]
31 để lấy một số làm đối số và trả về
['a', 'e', 'i', 'o']
08 nếu số đó lớn hơn
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
18. Nếu không, nó sẽ trả về
['a', 'e', 'i', 'o']
09. Cuộc gọi đến
filter[function, iterable]
34 áp dụng
filter[function, iterable]
31 cho mọi giá trị trong
['a', 'e', 'i', 'o']
01, lọc ra các số âm. Giải pháp này dễ đọc hơn so với giải pháp tương đương
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
13 của nó

Trong thực tế,

filter[function, iterable]
34 không giới hạn ở các hàm Boolean như trong các ví dụ trên. Bạn có thể sử dụng các loại hàm khác và
filter[function, iterable]
34 sẽ đánh giá giá trị trả về của chúng về tính trung thực

>>>

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
1

Trong ví dụ này, hàm lọc,

numbers = [1, 2, 3, 4, 5, 6, 7]

# the lambda function returns True for even numbers 
even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]

# converting to list
even_numbers = list[even_numbers_iterator]

print[even_numbers]
41, không trả về
['a', 'e', 'i', 'o']
08 hoặc
['a', 'e', 'i', 'o']
09 một cách rõ ràng mà nhận cùng một đối số. Vì
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
18,
numbers = [1, 2, 3, 4, 5, 6, 7]

# the lambda function returns True for even numbers 
even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]

# converting to list
even_numbers = list[even_numbers_iterator]

print[even_numbers]
45,
numbers = [1, 2, 3, 4, 5, 6, 7]

# the lambda function returns True for even numbers 
even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]

# converting to list
even_numbers = list[even_numbers_iterator]

print[even_numbers]
46 và
numbers = [1, 2, 3, 4, 5, 6, 7]

# the lambda function returns True for even numbers 
even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]

# converting to list
even_numbers = list[even_numbers_iterator]

print[even_numbers]
47 là giả, nên
filter[function, iterable]
34 sử dụng giá trị thực của chúng để lọc chúng ra. Danh sách cuối cùng chỉ chứa những giá trị trung thực trong Python

Ghi chú. Python tuân theo một bộ quy tắc để xác định giá trị thực của đối tượng

Ví dụ: các đối tượng sau là giả

  • Các hằng số như
    numbers = [1, 2, 3, 4, 5, 6, 7]
    
    # the lambda function returns True for even numbers 
    even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]
    
    # converting to list
    even_numbers = list[even_numbers_iterator]
    
    print[even_numbers]
    
    47 và
    ['a', 'e', 'i', 'o']
    09
  • Các loại số có giá trị bằng 0, như ________ 218, ________ 3702, ________ 3703,
    ['a', 'e', 'i', 'o']
    704 và ________ 3705
  • Các chuỗi và bộ sưu tập trống, như
    numbers = [1, 2, 3, 4, 5, 6, 7]
    
    # the lambda function returns True for even numbers 
    even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]
    
    # converting to list
    even_numbers = list[even_numbers_iterator]
    
    print[even_numbers]
    
    46,
    ['a', 'e', 'i', 'o']
    707,
    numbers = [1, 2, 3, 4, 5, 6, 7]
    
    # the lambda function returns True for even numbers 
    even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]
    
    # converting to list
    even_numbers = list[even_numbers_iterator]
    
    print[even_numbers]
    
    45,
    ['a', 'e', 'i', 'o']
    709,
    ['a', 'e', 'i', 'o']
    710 và
    ['a', 'e', 'i', 'o']
    711
  • Các đối tượng triển khai
    ['a', 'e', 'i', 'o']
    712 với giá trị trả về là
    ['a', 'e', 'i', 'o']
    09 hoặc
    ['a', 'e', 'i', 'o']
    714 với giá trị trả về là
    letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
    
    # a function that returns True if letter is vowel
    def filter_vowels[letter]:
        vowels = ['a', 'e', 'i', 'o', 'u']
        return True if letter in vowels else False
    
    

    filtered_vowels = filter[filter_vowels, letters]

    # converting to tuple vowels = tuple[filtered_vowels] print[vowels]
    18

Bất kỳ đối tượng nào khác sẽ được coi là trung thực

Cuối cùng, nếu bạn chuyển

numbers = [1, 2, 3, 4, 5, 6, 7]

# the lambda function returns True for even numbers 
even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]

# converting to list
even_numbers = list[even_numbers_iterator]

print[even_numbers]
47 thành
['a', 'e', 'i', 'o']
07, thì
filter[function, iterable]
34 sử dụng hàm nhận dạng và cho ra tất cả các phần tử của
filter[function, iterable]
54 đánh giá thành
['a', 'e', 'i', 'o']
08

>>>

['a', 'e', 'i', 'o']
0

Trong trường hợp này,

filter[function, iterable]
34 kiểm tra mọi mục trong đầu vào có thể lặp lại bằng cách sử dụng các quy tắc Python mà bạn đã thấy trước đây. Sau đó, nó mang lại những mục đánh giá là
['a', 'e', 'i', 'o']
08

Cho đến giờ, bạn đã học được những kiến ​​thức cơ bản về

filter[function, iterable]
34 và cách thức hoạt động của nó. Trong các phần sau, bạn sẽ học cách sử dụng
filter[function, iterable]
34 để xử lý các lần lặp và loại bỏ các giá trị không mong muốn mà không cần vòng lặp

Loại bỏ các quảng cáo

Lọc Iterables Với
filter[function, iterable]
34

Công việc của

filter[function, iterable]
34 là áp dụng hàm quyết định cho từng giá trị trong một lần lặp đầu vào và trả về một lần lặp mới với những mục vượt qua bài kiểm tra. Các phần sau đây cung cấp một số ví dụ thực tế để bạn có thể bắt đầu và chạy với
filter[function, iterable]
34

Trích xuất số chẵn

Ví dụ đầu tiên, giả sử bạn cần xử lý một danh sách các số nguyên và tạo một danh sách mới chứa các số chẵn. Cách tiếp cận đầu tiên của bạn đối với vấn đề này có thể là sử dụng vòng lặp

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
12 như thế này

>>>

filter[function, iterable]
5

Ở đây,

['a', 'e', 'i', 'o']
729 lấy một số nguyên có thể lặp lại và trả về một danh sách chỉ chứa những số chẵn. Câu lệnh điều kiện đóng vai trò là bộ lọc kiểm tra từng số để xem nó có chẵn hay không

Khi bạn gặp đoạn mã như thế này, bạn có thể trích xuất logic lọc thành một hàm vị từ nhỏ và sử dụng nó với

filter[function, iterable]
34. Bằng cách này, bạn có thể thực hiện phép tính tương tự mà không cần sử dụng vòng lặp rõ ràng

>>>

filter[function, iterable]
6

Ở đây,

['a', 'e', 'i', 'o']
731 lấy một số nguyên và trả về
['a', 'e', 'i', 'o']
08 nếu nó chẵn và
['a', 'e', 'i', 'o']
09 nếu ngược lại. Cuộc gọi đến
filter[function, iterable]
34 thực hiện công việc khó khăn và lọc ra các số lẻ. Kết quả là, bạn nhận được một danh sách các số chẵn. Mã này ngắn hơn và hiệu quả hơn vòng lặp
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
12 tương đương của nó

Tìm Số Nguyên Tố

Một ví dụ thú vị khác có thể là trích xuất tất cả các số nguyên tố trong một khoảng nhất định. Để làm điều đó, bạn có thể bắt đầu bằng cách mã hóa một hàm vị từ nhận một số nguyên làm đối số và trả về

['a', 'e', 'i', 'o']
08 nếu số đó là số nguyên tố và
['a', 'e', 'i', 'o']
09 nếu ngược lại. Đây là cách bạn có thể làm điều đó

>>>

filter[function, iterable]
1

Logic lọc hiện ở trong

['a', 'e', 'i', 'o']
738. Hàm lặp qua các số nguyên giữa
['a', 'e', 'i', 'o']
739 và căn bậc hai của
['a', 'e', 'i', 'o']
740. Bên trong vòng lặp, câu lệnh điều kiện kiểm tra xem số hiện tại có chia hết cho số nào khác trong khoảng không. Nếu vậy thì hàm trả về
['a', 'e', 'i', 'o']
09 vì số đó không phải là số nguyên tố. Ngược lại, nó trả về
['a', 'e', 'i', 'o']
08 để báo hiệu rằng số đầu vào là số nguyên tố

Với

['a', 'e', 'i', 'o']
738 tại chỗ và đã được thử nghiệm, bạn có thể sử dụng
filter[function, iterable]
34 để trích xuất các số nguyên tố từ một khoảng như thế này

>>>

filter[function, iterable]
3

Cuộc gọi này đến

filter[function, iterable]
34 trích xuất tất cả các số nguyên tố trong phạm vi giữa
['a', 'e', 'i', 'o']
746 và
['a', 'e', 'i', 'o']
747. Thuật toán được sử dụng trong
['a', 'e', 'i', 'o']
738 đến từ bài viết của Wikipedia về kiểm tra tính nguyên tố. Bạn có thể xem bài viết đó nếu bạn cần các phương pháp hiệu quả hơn

Loại bỏ các ngoại lệ trong một mẫu

Khi bạn đang cố gắng mô tả và tóm tắt một mẫu dữ liệu, bạn có thể bắt đầu bằng cách tìm giá trị trung bình hoặc trung bình của dữ liệu đó. Giá trị trung bình là một phép đo xu hướng trung tâm khá phổ biến và thường là cách tiếp cận đầu tiên để phân tích tập dữ liệu. Nó cung cấp cho bạn ý tưởng nhanh về trung tâm hoặc vị trí của dữ liệu

Trong một số trường hợp, giá trị trung bình không phải là thước đo xu hướng trung tâm đủ tốt cho một mẫu nhất định. Giá trị ngoại lệ là một trong những yếu tố ảnh hưởng đến mức độ chính xác của giá trị trung bình. Ngoại lệ là các điểm dữ liệu khác biệt đáng kể so với các quan sát khác trong một mẫu hoặc dân số. Ngoài ra, không có định nghĩa toán học duy nhất cho chúng trong thống kê

Tuy nhiên, trong các mẫu có phân phối chuẩn, các giá trị ngoại lệ thường được định nghĩa là các điểm dữ liệu nằm trên hai độ lệch chuẩn so với giá trị trung bình của mẫu

Bây giờ, giả sử bạn có một mẫu được phân phối bình thường với một số ngoại lệ đang ảnh hưởng đến độ chính xác trung bình. Bạn đã nghiên cứu các ngoại lệ và bạn biết chúng là các điểm dữ liệu không chính xác. Đây là cách bạn có thể sử dụng một vài chức năng từ mô-đun

['a', 'e', 'i', 'o']
749 cùng với
filter[function, iterable]
34 để dọn sạch dữ liệu của mình

>>>

numbers = [1, 2, 3, 4, 5, 6, 7]

# the lambda function returns True for even numbers 
even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]

# converting to list
even_numbers = list[even_numbers_iterator]

print[even_numbers]
4

Trong dòng được đánh dấu, hàm

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
13 trả về
['a', 'e', 'i', 'o']
08 nếu một điểm dữ liệu đã cho nằm giữa giá trị trung bình và hai độ lệch chuẩn. Nếu không, nó sẽ trả về
['a', 'e', 'i', 'o']
09. Khi bạn lọc
['a', 'e', 'i', 'o']
754 bằng chức năng này,
['a', 'e', 'i', 'o']
755 sẽ bị loại trừ. Sau khi làm sạch này, giá trị trung bình của mẫu có giá trị khác biệt đáng kể

Loại bỏ các quảng cáo

Xác thực mã định danh Python

Bạn cũng có thể sử dụng

filter[function, iterable]
34 với các lần lặp chứa dữ liệu không phải là số. Ví dụ: giả sử bạn cần xử lý một danh sách các chuỗi và trích xuất những chuỗi đó là mã định danh Python hợp lệ. Sau khi thực hiện một số nghiên cứu, bạn phát hiện ra rằng
['a', 'e', 'i', 'o']
757 của Python cung cấp một phương thức có tên là
['a', 'e', 'i', 'o']
758 có thể giúp bạn xác thực điều đó

Đây là cách bạn có thể sử dụng

filter[function, iterable]
34 cùng với
['a', 'e', 'i', 'o']
760 để nhanh chóng xác thực số nhận dạng

>>>

['a', 'e', 'i', 'o']
70

Trong trường hợp này,

filter[function, iterable]
34 chạy
['a', 'e', 'i', 'o']
758 trên mỗi chuỗi trong
['a', 'e', 'i', 'o']
763. Nếu chuỗi là một mã định danh Python hợp lệ, thì nó sẽ được đưa vào kết quả cuối cùng. Nếu không, từ được lọc ra. Lưu ý rằng bạn cần sử dụng
['a', 'e', 'i', 'o']
757 để truy cập
['a', 'e', 'i', 'o']
758 trong lệnh gọi tới
filter[function, iterable]
34

Ghi chú. Bên cạnh

['a', 'e', 'i', 'o']
758,
['a', 'e', 'i', 'o']
757 cung cấp một tập hợp phong phú các phương thức
['a', 'e', 'i', 'o']
769 có thể hữu ích để lọc các chuỗi có thể lặp lại

Cuối cùng, một bài tập thú vị có thể là lấy thêm ví dụ và kiểm tra xem mã định danh cũng là một từ khóa. Đi trước và cung cấp cho nó một thử. Gợi ý. bạn có thể sử dụng

['a', 'e', 'i', 'o']
770 từ mô-đun
['a', 'e', 'i', 'o']
771

Tìm từ Palindrome

Một bài tập thường phát sinh khi bạn làm quen với các chuỗi Python là tìm các từ nhạt màu trong danh sách các chuỗi. Một từ palindrome đọc ngược giống như chuyển tiếp. Ví dụ điển hình là “madam” và “racecar. ”

Để giải quyết vấn đề này, bạn sẽ bắt đầu bằng cách viết mã một hàm vị ngữ nhận vào một chuỗi và kiểm tra xem nó có đọc giống nhau theo cả hai hướng ngược và xuôi không. Đây là một triển khai có thể

>>>

['a', 'e', 'i', 'o']
71

Trong

['a', 'e', 'i', 'o']
772, trước tiên bạn đảo ngược bản gốc của
['a', 'e', 'i', 'o']
773 và lưu trữ nó trong
['a', 'e', 'i', 'o']
774. Sau đó, bạn trả về kết quả so sánh cả hai từ cho bình đẳng. Trong trường hợp này, bạn sử dụng
['a', 'e', 'i', 'o']
775 để ngăn chặn sự khác biệt liên quan đến trường hợp. Nếu bạn gọi hàm bằng một từ đối xứng, thì bạn nhận được
['a', 'e', 'i', 'o']
08. Nếu không, bạn nhận được
['a', 'e', 'i', 'o']
09

Bạn đã có một hàm vị ngữ đang hoạt động để xác định các từ màu nhạt. Đây là cách bạn có thể sử dụng

filter[function, iterable]
34 để thực hiện công việc khó khăn

>>>

['a', 'e', 'i', 'o']
72

Mát lạnh. Sự kết hợp giữa

filter[function, iterable]
34 và
['a', 'e', 'i', 'o']
772 của bạn hoạt động bình thường. Nó cũng ngắn gọn, dễ đọc và hiệu quả. Làm tốt lắm

Kết hợp
filter[function, iterable]
34 với các công cụ chức năng khác

Cho đến giờ, bạn đã học cách sử dụng

filter[function, iterable]
34 để chạy các hoạt động lọc khác nhau trên iterables. Trong thực tế, bạn có thể kết hợp
filter[function, iterable]
34 với các công cụ chức năng khác để thực hiện nhiều tác vụ khác nhau trên iterables mà không cần sử dụng các vòng lặp rõ ràng. Trong hai phần tiếp theo, bạn sẽ học những kiến ​​thức cơ bản về cách sử dụng
filter[function, iterable]
34 cùng với
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14 và
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16

Bình phương của số chẵn.
filter[function, iterable]
34 và
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14

Đôi khi, bạn cần thực hiện một lần lặp, xử lý từng mục của nó bằng hàm chuyển đổi và tạo một lần lặp mới với các mục kết quả. Trong trường hợp đó, bạn có thể sử dụng

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14. Hàm có chữ ký sau

['a', 'e', 'i', 'o']
73

Các đối số hoạt động như thế này

  1. ['a', 'e', 'i', 'o']
    07 giữ chức năng chuyển đổi. Hàm này sẽ nhận nhiều đối số như số lần lặp mà bạn chuyển vào
    letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
    
    # a function that returns True if letter is vowel
    def filter_vowels[letter]:
        vowels = ['a', 'e', 'i', 'o', 'u']
        return True if letter in vowels else False
    
    

    filtered_vowels = filter[filter_vowels, letters]

    # converting to tuple vowels = tuple[filtered_vowels] print[vowels]
    14
  2. filter[function, iterable]
    54 giữ một Python iterable. Lưu ý rằng bạn có thể cung cấp một số lần lặp lại cho
    letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
    
    # a function that returns True if letter is vowel
    def filter_vowels[letter]:
        vowels = ['a', 'e', 'i', 'o', 'u']
        return True if letter in vowels else False
    
    

    filtered_vowels = filter[filter_vowels, letters]

    # converting to tuple vowels = tuple[filtered_vowels] print[vowels]
    14, nhưng đó là tùy chọn

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14 áp dụng
['a', 'e', 'i', 'o']
07 cho từng mục trong
filter[function, iterable]
54 để biến nó thành một giá trị khác với các tính năng bổ sung. Sau đó,
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14 mang lại từng mục được chuyển đổi theo yêu cầu

Để minh họa cách bạn có thể sử dụng

filter[function, iterable]
34 cùng với
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14, giả sử bạn cần tính giá trị bình phương của tất cả các số chẵn trong một danh sách đã cho. Trong trường hợp đó, bạn có thể sử dụng
filter[function, iterable]
34 để trích xuất các số chẵn và sau đó sử dụng
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14 để tính các giá trị bình phương

>>>

['a', 'e', 'i', 'o']
74

Đầu tiên, bạn lấy các số chẵn bằng cách sử dụng

filter[function, iterable]
34 và
['a', 'e', 'i', 'o']
731 giống như bạn đã làm cho đến nay. Sau đó, bạn gọi
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14 bằng hàm
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
13 lấy một số và trả về giá trị bình phương của nó. Lệnh gọi tới
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14 áp dụng hàm
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
13 cho từng số trong
filter[function, iterable]
308, vì vậy bạn nhận được một danh sách các số chẵn hình vuông. Ví dụ cuối cùng cho thấy cách kết hợp
filter[function, iterable]
34 và
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14 trong một biểu thức

Loại bỏ các quảng cáo

Tổng các số chẵn.
filter[function, iterable]
34 và
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16

Một công cụ lập trình chức năng khác trong Python là

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16. Không giống như
filter[function, iterable]
34 và
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14 vẫn là các chức năng tích hợp sẵn,
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16 đã được chuyển sang mô-đun
filter[function, iterable]
317. Hàm này hữu ích khi bạn cần áp dụng một hàm cho một lần lặp và giảm nó thành một giá trị tích lũy duy nhất. Loại hoạt động này thường được gọi là giảm hoặc gấp

Chữ ký của

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16 là như thế này

['a', 'e', 'i', 'o']
75

Đây là ý nghĩa của các đối số

  1. ['a', 'e', 'i', 'o']
    07 giữ bất kỳ Python nào có thể gọi được chấp nhận hai đối số và trả về một giá trị
  2. filter[function, iterable]
    54 giữ bất kỳ Python iterable nào
  3. filter[function, iterable]
    321 giữ một giá trị đóng vai trò là điểm bắt đầu cho phép tính hoặc giảm một phần đầu tiên. Đó là một đối số tùy chọn

Một cuộc gọi đến

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16 bắt đầu bằng cách áp dụng
['a', 'e', 'i', 'o']
07 cho hai mục đầu tiên trong
filter[function, iterable]
54. Bằng cách này, nó tính toán kết quả tích lũy đầu tiên, được gọi là bộ tích lũy. Sau đó,
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16 sử dụng bộ tích lũy và mục thứ ba trong
filter[function, iterable]
54 để tính kết quả tích lũy tiếp theo. Quá trình tiếp tục cho đến khi hàm trả về với một giá trị duy nhất

Nếu bạn cung cấp một giá trị cho

filter[function, iterable]
321, thì
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16 sẽ chạy tính toán từng phần đầu tiên bằng cách sử dụng
filter[function, iterable]
321 và mục đầu tiên của
filter[function, iterable]
54

Đây là một ví dụ kết hợp

filter[function, iterable]
34 và
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16 để tính cộng dồn tổng của tất cả các số chẵn trong một danh sách

>>>

['a', 'e', 'i', 'o']
76

Ở đây, lệnh gọi đầu tiên tới

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16 sẽ tính tổng của tất cả các số chẵn mà
filter[function, iterable]
34 cung cấp. Để làm điều đó,
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16 sử dụng hàm
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
13 cộng hai số cùng một lúc

Ví dụ cuối cùng cho thấy cách xâu chuỗi

filter[function, iterable]
34 và
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16 để tạo ra kết quả giống như bạn đã nhận được trước đó

Lọc Iterables Với
filter[function, iterable]
339

Trong

filter[function, iterable]
340, bạn sẽ tìm thấy một hàm có tên là
filter[function, iterable]
339 thực hiện nghịch đảo của
filter[function, iterable]
34. Nó lấy một iterable làm đối số và trả về một iterator mới mang lại các mục mà hàm quyết định trả về kết quả sai. Nếu bạn sử dụng
numbers = [1, 2, 3, 4, 5, 6, 7]

# the lambda function returns True for even numbers 
even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]

# converting to list
even_numbers = list[even_numbers_iterator]

print[even_numbers]
47 làm đối số đầu tiên cho
filter[function, iterable]
339, thì bạn sẽ nhận được các mục sai

Mục đích của chức năng

filter[function, iterable]
339 là thúc đẩy tái sử dụng mã. Nếu bạn đã có chức năng quyết định, thì bạn có thể sử dụng chức năng này với
filter[function, iterable]
339 để lấy các mặt hàng bị từ chối. Điều này giúp bạn không phải mã hóa chức năng quyết định nghịch đảo

Trong các phần sau, bạn sẽ mã hóa một số ví dụ cho thấy cách bạn có thể tận dụng lợi thế của

filter[function, iterable]
339 để sử dụng lại các hàm quyết định hiện có và tiếp tục thực hiện một số thao tác lọc

Trích xuất số lẻ

Bạn đã mã hóa một hàm vị từ có tên là

['a', 'e', 'i', 'o']
731 để kiểm tra xem một số có chẵn hay không. Với chức năng đó và sự trợ giúp của
filter[function, iterable]
339, bạn có thể xây dựng một trình vòng lặp mang lại các số lẻ mà không cần phải mã hóa hàm
filter[function, iterable]
350

>>>

['a', 'e', 'i', 'o']
77

Trong ví dụ này,

filter[function, iterable]
339 trả về một trình lặp tạo ra các số lẻ từ trình lặp đầu vào. Lưu ý rằng lệnh gọi tới
filter[function, iterable]
339 rất đơn giản và dễ đọc

Loại bỏ các quảng cáo

Lọc ra các giá trị NaN

Đôi khi, khi bạn đang làm việc với số học dấu phẩy động, bạn có thể gặp phải vấn đề có các giá trị NaN [không phải số]. Ví dụ: giả sử bạn đang tính giá trị trung bình của một mẫu dữ liệu chứa các giá trị NaN. Nếu bạn sử dụng mô-đun

['a', 'e', 'i', 'o']
749 của Python để tính toán này, thì bạn sẽ nhận được kết quả sau

>>>

['a', 'e', 'i', 'o']
78

Trong ví dụ này, lệnh gọi tới

filter[function, iterable]
354 trả về
filter[function, iterable]
355, đây không phải là giá trị nhiều thông tin nhất mà bạn có thể nhận được. Các giá trị NaN có thể có nguồn gốc khác nhau. Chúng có thể là do đầu vào không hợp lệ, dữ liệu bị hỏng, v.v. Bạn nên tìm chiến lược phù hợp để đối phó với chúng trong các ứng dụng của mình. Một giải pháp thay thế có thể là xóa chúng khỏi dữ liệu của bạn

Mô-đun

filter[function, iterable]
356 cung cấp một chức năng thuận tiện có tên là
filter[function, iterable]
357 có thể giúp bạn giải quyết vấn đề này. Hàm lấy một số
filter[function, iterable]
358 làm đối số và trả về
['a', 'e', 'i', 'o']
08 nếu
filter[function, iterable]
358 là NaN và ngược lại là
['a', 'e', 'i', 'o']
09. Bạn có thể sử dụng chức năng này để cung cấp tiêu chí lọc trong cuộc gọi
filter[function, iterable]
339

>>>

['a', 'e', 'i', 'o']
79

Sử dụng

filter[function, iterable]
363 cùng với
filter[function, iterable]
339 cho phép bạn loại trừ tất cả các giá trị NaN khỏi phép tính trung bình. Lưu ý rằng sau khi lọc, lệnh gọi tới
filter[function, iterable]
354 sẽ trả về một giá trị cung cấp mô tả tốt hơn về dữ liệu mẫu của bạn

Mã hóa với phong cách Pythonic

Mặc dù

letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
14,
filter[function, iterable]
34 và
letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']

# a function that returns True if letter is vowel
def filter_vowels[letter]:
    vowels = ['a', 'e', 'i', 'o', 'u']
    return True if letter in vowels else False

filtered_vowels = filter[filter_vowels, letters]

# converting to tuple vowels = tuple[filtered_vowels] print[vowels]
16 đã xuất hiện từ lâu trong hệ sinh thái Python, nhưng khả năng hiểu danh sách và biểu thức trình tạo đã trở nên mạnh mẽ và là đối thủ cạnh tranh của Pythonic trong hầu hết mọi trường hợp sử dụng

Chức năng mà các hàm này cung cấp hầu như luôn được thể hiện rõ ràng hơn bằng cách sử dụng biểu thức trình tạo hoặc cách hiểu danh sách. Trong hai phần sau, bạn sẽ tìm hiểu cách thay thế lệnh gọi tới

filter[function, iterable]
34 bằng cách hiểu danh sách hoặc biểu thức trình tạo. Sự thay thế này sẽ làm cho mã của bạn Pythonic hơn

Thay thế
filter[function, iterable]
34 bằng cách hiểu danh sách

Bạn có thể sử dụng mẫu sau để nhanh chóng thay thế lệnh gọi tới

filter[function, iterable]
34 bằng cách hiểu danh sách tương đương

filter[function, iterable]
30

Trong cả hai trường hợp, mục đích cuối cùng là tạo một đối tượng danh sách. Cách tiếp cận hiểu danh sách rõ ràng hơn cấu trúc

filter[function, iterable]
34 tương đương của nó. Đọc nhanh qua phần hiểu sẽ thấy phép lặp và cả chức năng lọc trong mệnh đề
filter[function, iterable]
373

Sử dụng khả năng hiểu danh sách thay vì

filter[function, iterable]
34 có lẽ là cách mà hầu hết các nhà phát triển Python thực hiện hiện nay. Tuy nhiên, việc hiểu danh sách có một số nhược điểm so với
filter[function, iterable]
34. Đáng chú ý nhất là thiếu đánh giá lười biếng. Ngoài ra, khi các nhà phát triển bắt đầu đọc mã sử dụng
filter[function, iterable]
34, họ biết ngay rằng mã đang thực hiện các hoạt động lọc. Tuy nhiên, điều đó không quá rõ ràng trong mã sử dụng khả năng hiểu danh sách với cùng một mục tiêu

Một chi tiết cần lưu ý khi chuyển cấu trúc

filter[function, iterable]
34 thành cách hiểu danh sách là nếu bạn chuyển
numbers = [1, 2, 3, 4, 5, 6, 7]

# the lambda function returns True for even numbers 
even_numbers_iterator = filter[lambda x: [x%2 == 0], numbers]

# converting to list
even_numbers = list[even_numbers_iterator]

print[even_numbers]
47 cho đối số đầu tiên của
filter[function, iterable]
34, thì cách hiểu danh sách tương đương sẽ như thế này

filter[function, iterable]
31

Trong trường hợp này, mệnh đề

filter[function, iterable]
373 trong bài kiểm tra mức độ hiểu danh sách của
filter[function, iterable]
381 về giá trị thực của nó. Bài kiểm tra này tuân theo các quy tắc Python tiêu chuẩn về các giá trị thực mà bạn đã thấy

Đây là một ví dụ về việc thay thế

filter[function, iterable]
34 bằng cách hiểu danh sách để tạo danh sách các số chẵn

>>>

filter[function, iterable]
32

Trong ví dụ này, bạn có thể thấy rằng biến thể hiểu danh sách rõ ràng hơn. Nó đọc gần giống như tiếng Anh đơn giản. Giải pháp hiểu danh sách cũng tránh phải gọi

filter[function, iterable]
19 để tạo danh sách cuối cùng

Loại bỏ các quảng cáo

Thay thế
filter[function, iterable]
34 bằng biểu thức trình tạo

Sự thay thế tự nhiên cho

filter[function, iterable]
34 là một biểu thức trình tạo. Đó là bởi vì
filter[function, iterable]
34 trả về một trình lặp tạo ra các mục theo yêu cầu giống như biểu thức trình tạo. Trình lặp Python được biết đến là bộ nhớ hiệu quả. Đó là lý do tại sao
filter[function, iterable]
34 hiện trả về một trình vòng lặp thay vì một danh sách

Đây là cách bạn có thể sử dụng các biểu thức trình tạo để viết ví dụ trong phần trên

>>>

filter[function, iterable]
33

Biểu thức trình tạo hiệu quả như lệnh gọi tới

filter[function, iterable]
34 về mức tiêu thụ bộ nhớ. Cả hai công cụ đều trả về các trình vòng lặp mang lại các mục theo yêu cầu. Sử dụng một trong hai có thể là một câu hỏi về hương vị, sự tiện lợi hoặc phong cách. Vì vậy, bạn phụ trách

Phần kết luận

filter[function, iterable]
34 của Python cho phép bạn thực hiện các thao tác lọc trên các lần lặp. Loại hoạt động này bao gồm việc áp dụng hàm Boolean cho các mục trong một lần lặp và chỉ giữ lại những giá trị mà hàm trả về kết quả đúng. Nói chung, bạn có thể sử dụng
filter[function, iterable]
34 để xử lý các lần lặp hiện có và tạo các lần lặp mới chứa các giá trị mà bạn hiện đang cần

Trong hướng dẫn này, bạn đã học cách

  • Làm việc với
    filter[function, iterable]
    34 của Python
  • Sử dụng
    filter[function, iterable]
    34 để xử lý các lần lặp và giữ các giá trị bạn cần
  • Kết hợp
    filter[function, iterable]
    34 với
    letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
    
    # a function that returns True if letter is vowel
    def filter_vowels[letter]:
        vowels = ['a', 'e', 'i', 'o', 'u']
        return True if letter in vowels else False
    
    

    filtered_vowels = filter[filter_vowels, letters]

    # converting to tuple vowels = tuple[filtered_vowels] print[vowels]
    14 và
    letters = ['a', 'b', 'd', 'e', 'i', 'j', 'o']
    
    # a function that returns True if letter is vowel
    def filter_vowels[letter]:
        vowels = ['a', 'e', 'i', 'o', 'u']
        return True if letter in vowels else False
    
    

    filtered_vowels = filter[filter_vowels, letters]

    # converting to tuple vowels = tuple[filtered_vowels] print[vowels]
    16 để tiếp cận các vấn đề khác nhau
  • Thay thế
    filter[function, iterable]
    34 bằng cách hiểu danh sách và biểu thức trình tạo

Với kiến ​​thức mới này, giờ đây bạn có thể sử dụng

filter[function, iterable]
34 trong mã của mình để tạo cho nó một phong cách chức năng. Bạn cũng có thể chuyển sang phong cách Pythonic hơn và thay thế
filter[function, iterable]
34 bằng cách hiểu danh sách hoặc biểu thức trình tạo

Đánh dấu là đã hoàn thành

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Leodanis Pozo Ramos

Leodanis là một kỹ sư công nghiệp yêu thích Python và phát triển phần mềm. Anh ấy là một nhà phát triển Python tự học với hơn 6 năm kinh nghiệm. Anh ấy là một nhà văn đam mê kỹ thuật với số lượng bài báo được xuất bản ngày càng tăng trên Real Python và các trang web khác

» Tìm hiểu thêm về Leodanis

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Aldren

Bartosz

David

Joanna

Gia-cốp

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Bộ lọc [] trong Python là gì?

Bộ lọc của Python[] là hàm tích hợp sẵn cho phép bạn xử lý một lần lặp và trích xuất các mục thỏa mãn một điều kiện nhất định . Quá trình này thường được gọi là hoạt động lọc.

Làm cách nào để lọc dữ liệu trong Pandas?

bộ lọc gấu trúc[] theo chỉ mục . Ví dụ dưới đây lọc các hàng theo chỉ số 3 và 5. Sử dụng like param để lọc các hàng khớp với chuỗi con. Use axis=0 on filter[] function to filter rows by index [indices]. The below example filters rows by index 3 and 5 . Use like param to filter rows that match with substring.

Chủ Đề