Lọc đơn giản này có thể đạt được theo nhiều cách với Python. Cách tiếp cận tốt nhất là sử dụng "danh sách toàn diện" như sau:
>>> lst = ['a', 'ab', 'abc', 'bac']
>>> [k for k in lst if 'ab' in k]
['ab', 'abc']
Một cách khác là sử dụng hàm
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
1. Trong Python 2:>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
Trong Python 3, nó trả về một trình lặp thay vì một danh sách, nhưng bạn có thể đúc nó:
>>> list[filter[lambda k: 'ab' in k, lst]]
['ab', 'abc']
Mặc dù tốt hơn là thực hành để sử dụng một sự hiểu biết.
Tóm tắt: Trong hướng dẫn này, bạn sẽ học cách lọc các yếu tố danh sách bằng cách sử dụng chức năng Python
2 tích hợp.: in this tutorial, you’ll learn how to filter list elements by using the built-in Python >>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
2 function.Giới thiệu về hàm Python Filter []
Đôi khi, bạn cần lặp lại các yếu tố của một danh sách và chọn một số trong số chúng dựa trên các tiêu chí được chỉ định.
Giả sử rằng bạn có danh sách sau của
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
3:Code language: Python [python]
scores = [70, 60, 80, 90, 50]
Để có được tất cả các phần tử từ danh sách
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
3 trong đó mỗi phần tử lớn hơn hoặc bằng 70, bạn sử dụng mã sau:Code language: Python [python]
scores = [70, 60, 80, 90, 50] filtered = [] for score in scores: if score >= 70: filtered.append[score] print[filtered]
Làm thế nào nó hoạt động.
- Đầu tiên, xác định một danh sách trống [
5] sẽ giữ các yếu tố từ danh sách>>> filter[lambda k: 'ab' in k, lst] ['ab', 'abc']
3.>>> filter[lambda k: 'ab' in k, lst] ['ab', 'abc']
- Thứ hai, lặp lại các yếu tố của danh sách
3. Nếu phần tử lớn hơn hoặc bằng 70, hãy thêm nó vào danh sách>>> filter[lambda k: 'ab' in k, lst] ['ab', 'abc']
5.>>> filter[lambda k: 'ab' in k, lst] ['ab', 'abc']
- Thứ ba, hiển thị danh sách
5 lên màn hình.>>> filter[lambda k: 'ab' in k, lst] ['ab', 'abc']
Python có chức năng tích hợp có tên
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
2 cho phép bạn lọc danh sách [hoặc một tuple] theo cách đẹp hơn.Sau đây cho thấy cú pháp của hàm
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
2:Code language: Python [python]
filter[fn, list]
Hàm
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
2 lặp lại các phần tử của >>> list[filter[lambda k: 'ab' in k, lst]]
['ab', 'abc']
3 và áp dụng hàm >>> list[filter[lambda k: 'ab' in k, lst]]
['ab', 'abc']
4 cho mỗi phần tử. Nó trả về một trình lặp cho các phần tử trong đó >>> list[filter[lambda k: 'ab' in k, lst]]
['ab', 'abc']
4 trả về >>> list[filter[lambda k: 'ab' in k, lst]]
['ab', 'abc']
6.Trên thực tế, bạn có thể chuyển bất kỳ sự khác biệt nào cho đối số thứ hai của hàm
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
2, không chỉ là một danh sách.Sau đây cho thấy cách sử dụng hàm
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
2 để trả về danh sách >>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
3 trong đó mỗi điểm lớn hơn hoặc bằng 70:Code language: Python [python]
scores = [70, 60, 80, 90, 50] filtered = filter[lambda score: score >= 70, scores] print[list[filtered]]
Output:
Code language: Python [python]
[70, 80, 90]
Vì hàm
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
2 trả về trình lặp, bạn có thể sử dụng vòng lặp 1 để lặp lại nó. Hoặc bạn có thể sử dụng chức năngCode language: Python [python]
scores = [70, 60, 80, 90, 50]
2 để chuyển đổi trình lặp thành danh sách.Code language: Python [python]
scores = [70, 60, 80, 90, 50]
Sử dụng hàm Python Filter [] để lọc danh sách các bộ dữ liệu ví dụ
Giả sử bạn có danh sách các bộ dữ liệu sau:
Code language: Python [python]
countries = [ ['China', 1394015977], ['United States', 329877505], ['India', 1326093247], ['Indonesia', 267026366], ['Bangladesh', 162650853], ['Pakistan', 233500636], ['Nigeria', 214028302], ['Brazil', 21171597], ['Russia', 141722205], ['Mexico', 128649565] ]
Mỗi yếu tố trong một danh sách là một tuple chứa tên và dân số của đất nước.
Để có được tất cả các quốc gia có dân số lớn hơn 300 triệu, bạn có thể sử dụng chức năng
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
2 như sau:Code language: Python [python]
countries = [ ['China', 1394015977], ['United States', 329877505], ['India', 1326093247], ['Indonesia', 267026366], ['Bangladesh', 162650853], ['Pakistan', 233500636], ['Nigeria', 214028302], ['Brazil', 21171597], ['Russia', 141722205], ['Mexico', 128649565] ] populated = filter[lambda c: c[1] > 300000000, countries] print[list[populated]]
Output:
>>> filter[lambda k: 'ab' in k, lst]
['ab', 'abc']
0Bản tóm tắt
- Sử dụng hàm Python
2 để lọc danh sách [hoặc một tuple].>>> filter[lambda k: 'ab' in k, lst] ['ab', 'abc']
Bạn có thấy hướng dẫn này hữu ích không?