Tin tức và phân tích của tất cả các thiết bị di động

Cách lọc danh sách trong python đúng cách để sử dụng dữ liệu của bạn tốt hơn

Trong Python, một trong những cách phổ biến nhất để lưu trữ dữ liệu tuần tự hoặc có thứ tự là sử dụng danh sách. Danh sách trong Python là một cấu trúc dữ liệu tích hợp có thứ tự, có thể thay đổi, được sử dụng để lưu trữ các bộ sưu tập dữ liệu. Các mục được lưu trong danh sách được lập chỉ mục từ đầu và người dùng có thể thay đổi nội dung của danh sách sau khi được tạo.

Việc các mục trong danh sách được lập chỉ mục cho phép các mục trùng lặp được lưu trữ trong danh sách. Danh sách trong Python cũng có thể chứa các phần tử thuộc nhiều loại dữ liệu khác nhau. Các mục trong danh sách được phân tách bằng dấu phẩy và được đặt trong dấu ngoặc vuông.

Dưới đây là ví dụ về danh sách trong Python:

# A list containing one data type - String
colors = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

# A list containing multiple data types
movies = ['Transformers', 2012, 'Avengers', 300]

# A list with duplicate values
users = ['John', 'Mary', 'Elizabeth', 'John']

Danh sách là một cấu trúc dữ liệu rất linh hoạt và bạn có thể thực hiện nhiều thao tác trên dữ liệu được lưu trữ trong danh sách. Một thao tác phổ biến và hữu ích được thực hiện trên danh sách là lọc dữ liệu được lưu trong danh sách.

Tại sao lọc danh sách lại quan trọng

Lọc danh sách có nghĩa là trích xuất các tập hợp con dữ liệu cụ thể đáp ứng các tiêu chí nhất định. Ví dụ: bạn có thể chỉ quan tâm đến các số chẵn trong danh sách chứa các số từ 1 tối đa 10. Để trích xuất dữ liệu đó từ danh sách, chỉ cần lọc danh sách để lấy các số chia hết cho hai.

Tính năng lọc đặc biệt hữu ích trong thao tác và phân tích dữ liệu vì nó cho phép bạn xóa các mục không mong muốn khỏi danh sách, tạo danh sách mới chứa các mục đáp ứng các tiêu chí nhất định và trích xuất dữ liệu đáp ứng các điều kiện nhất định.

Một số cách sử dụng danh sách bộ lọc trong thế giới thực bao gồm:

  • Xác thực dữ liệu – Khi làm việc với danh sách, bạn có thể chỉ muốn làm việc với dữ liệu đáp ứng các tiêu chí nhất định. Ví dụ: trong danh sách người dùng, bạn có thể quan tâm đến những người dùng có cả họ và tên. Lọc cho phép bạn xác thực và xác thực dữ liệu trong danh sách trước khi xử lý nó. Bằng cách này, bạn sẽ tránh làm việc với dữ liệu không đáp ứng yêu cầu của mình.
  • Làm sạch dữ liệu – Vì danh sách có thể lưu trữ các loại dữ liệu khác nhau nên không có gì lạ khi danh sách chứa dữ liệu không mong muốn mà bạn không quan tâm. Ví dụ: trong danh sách chứa tên, bạn có thể không quan tâm đến các giá trị số trong danh sách. Bằng cách lọc, bạn có thể loại bỏ dữ liệu không mong muốn.
  • Phân tích dữ liệu – Lọc dữ liệu đặc biệt hữu ích trong phân tích dữ liệu vì nó cho phép bạn tập trung vào các tập hợp dữ liệu cụ thể, giúp dễ dàng xác định các mẫu và xu hướng. Ví dụ: trong danh sách sinh viên, bạn có thể lọc sinh viên và sử dụng kết quả trong phân tích dữ liệu. Bạn thậm chí có thể lọc theo độ tuổi, địa điểm và tầng lớp. Điều này cho phép rút ra những suy luận hữu ích hơn từ các tập hợp con dữ liệu cụ thể trong danh sách

Lọc danh sách là một tính năng rất hữu ích vì nó cho phép bạn kiểm soát dữ liệu được lưu trữ trong danh sách, cho phép bạn chỉ làm việc với dữ liệu mà bạn quan tâm.

Nhắm mục tiêu các tập hợp con dữ liệu cụ thể được lưu trữ trong danh sách rất hữu ích vì nó cải thiện việc xử lý và phân tích dữ liệu, giúp các quy trình tốt hơn, nhanh hơn và chính xác hơn.

Sử dụng hàm filter().

Hàm filter() là một hàm Python tích hợp có thể được sử dụng để lặp qua các lần lặp, chẳng hạn như danh sách, bộ dữ liệu, bộ hoặc từ điển và để trích xuất các phần tử từ các lần lặp đáp ứng một điều kiện nhất định.

Iterable trong Python là một đối tượng có thể duyệt qua từng phần tử của nó. Việc lặp qua một lần lặp sẽ trả về các phần tử trong lần lặp đó.

Cú pháp hàm lọc như sau:

filter(function, iterable)

hàm – Hàm Python chứa điều kiện lọc

iterable – Có thể lặp lại được lọc. Trong trường hợp này, chúng tôi sẽ sử dụng một danh sách.

Hàm filter() lấy hàm đã truyền và áp dụng nó cho từng phần tử của lần lặp đã truyền, kiểm tra điều kiện lọc đối với phần tử đó. Nếu phần tử đáp ứng điều kiện, tức là nó trả về giá trị boolean true, giá trị này sẽ được chọn bởi hàm filter(). Nếu không đáp ứng điều kiện thì mục đó không được chọn.

Hàm filter() trả về một đối tượng có thể lặp lại với các phần tử đáp ứng điều kiện lọc. Bạn có thể tạo danh sách mới chứa các mục phù hợp với điều kiện lọc bằng hàm list().

Để xem hàm filter() đang hoạt động, hãy xem danh sách sau, danh sách này được lọc để chọn các số nhỏ hơn 50:

#A list of numbers
numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# function containing the filtering condition
def is_even(num):
   if num < 50:
      return True
   else:
      return False

# the function list() is used to create a list from the iterable
# returned by the filter() function
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)

Đoạn mã trên in kết quả sau:

[15, 46, 24, 37]

Sử dụng vòng lặp for

Trong Python, vòng lặp for là một câu lệnh điều khiển luồng được sử dụng để lặp qua các cấu trúc dữ liệu tuần tự như danh sách, bộ dữ liệu, chuỗi và mảng. Vòng lặp for liên tục thực thi một khối mã cho từng phần tử trong chuỗi.

Cú pháp chung cho vòng lặp for như sau:

for item in iterable:
    # Block of code to be executed for each item in the iterabele

item – một biến đại diện cho mục hiện đang được xử lý trong vòng lặp

iterable – trình tự mà vòng lặp for lặp lại. Trong trường hợp này, một danh sách

Để lọc danh sách bằng vòng lặp for, chúng ta cần chuyển điều kiện lọc vào phần mã sẽ được thực thi. Bằng cách này, mỗi mục sẽ được đánh giá để xem liệu nó có đáp ứng một điều kiện nhất định hay không.

Khi sử dụng vòng lặp for để lọc danh sách, bạn cũng cần tạo một danh sách trống mà bạn sẽ nối thêm các giá trị đáp ứng điều kiện lọc vào.

Để thấy điều này hoạt động, hãy lọc danh sách các số để nhận các số nhỏ hơn 50 bằng vòng lặp for:

numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

filtered_numbers = []

for num in numbers:
    if num < 50:
        # append() used to add a number that passes the condition
        # into filtered_numbers.
        filtered_numbers.append(num)

print(filtered_numbers)

Đoạn mã trên in kết quả sau:

[15, 46, 24, 37]

Sử dụng danh sách khác

Bạn có thể lọc danh sách bằng cách sử dụng một danh sách khác bằng cách kiểm tra xem mục trong danh sách bạn muốn lọc có xuất hiện trong danh sách khác hay không. Ví dụ: hãy xem xét hai danh sách dưới đây

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

vowels = ['a', 'e', 'i', 'o', 'u']

Trong danh sách gọi là các chữ cái ở trên, chúng ta có thể xác định mục nào trong danh sách không phải là nguyên âm bằng cách kiểm tra xem mục đó có xuất hiện trong danh sách nguyên âm hay không. Nếu một mục không xuất hiện trong danh sách nguyên âm thì đó không phải là nguyên âm.

Bằng cách này chúng ta có thể nhận được tất cả các ký tự trong các chữ cái không phải là nguyên âm. Để thực hiện việc này, hãy thực thi đoạn mã sau:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

not_vowel = []

for letter in letters:
    if letter not in vowels:
        not_vowel.append(letter)
print(not_vowel)

Đoạn mã trên in ra kết quả sau chứa các ký tự bằng chữ cái không phải nguyên âm.

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

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

Trong Python, tính năng hiểu danh sách cung cấp cú pháp ngắn hơn, ngắn gọn hơn và rõ ràng hơn để tạo danh sách mới từ danh sách hiện có. Khả năng hiểu danh sách có khả năng giảm nhiều dòng mã được sử dụng để tạo danh sách mới từ một danh sách khác bằng vòng lặp for thành một dòng duy nhất.

Điều này là do khi sử dụng tính năng hiểu danh sách, các mục được xác định và thêm vào danh sách mới trên một dòng.

Cú pháp hiểu danh sách như sau:

new_list = [expression for element in iterable if condition]

new_list – một danh sách mới chứa các thành phần được thêm vào bằng cách hiểu danh sách

biểu thức – thao tác sẽ được áp dụng cho mỗi lần lặp

item – tên biến đại diện cho mục hiện đang hoạt động trong iterable

iterable – iterable từ đó các phần tử sẽ được chọn.

nếu điều kiện – một phần tùy chọn trong đó bạn có thể thêm điều kiện để lọc các mục để chỉ thêm những mục đáp ứng điều kiện nhất định vào danh sách mới mà bạn tạo.

Để xem hoạt động của danh sách cũng như cách danh sách có thể đơn giản hóa quá trình lọc và tạo danh sách mới, chúng tôi sẽ sử dụng danh sách các chữ cái và nguyên âm để lọc ra các mục trong danh sách các chữ cái không có trong danh sách nguyên âm. Để thực hiện việc này, hãy thực thi đoạn mã sau:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

# list comprehension
not_vowel = [letter for letter in letters if letter not in vowels]
print(not_vowel)

Đầu ra của đoạn mã trên được hiển thị dưới đây:

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Kết quả đầu ra tương tự như ví dụ trước, sử dụng vòng lặp for để lọc danh sách bằng danh sách khác. Tuy nhiên, nó sử dụng ít dòng mã hơn để đạt được kết quả tương tự.

Ứng dụng

Khi làm việc với dữ liệu trong Python, một thao tác phổ biến bạn cần làm là lọc dữ liệu từ một đối tượng có thể lặp lại, chẳng hạn như danh sách. Đây là một bước rất hữu ích trong phân tích và xử lý dữ liệu vì nó cho phép bạn chỉ làm việc với dữ liệu có liên quan đến hoạt động hoặc quá trình xử lý đang được thực hiện.

Cấu trúc dữ liệu tuần tự rất phổ biến trong Python là danh sách. Nếu bạn đang làm việc với một danh sách và cần lọc danh sách đó, hãy cân nhắc sử dụng bất kỳ phương pháp nào được mô tả trong bài viết.

Bạn cũng có thể đọc về cách sử dụng hàm lambda trong Python kèm theo các ví dụ.

Mục lục