Thứ tư, 14/10/2020 | 00:00 GMT+7

Cách sử dụng các hàm tất cả, bất kỳ, tối đa và tối thiểu trong Python

Python bao gồm một số hàm tích hợp — đây là các hàm Python global có thể được gọi từ bất kỳ mã Python nào mà không cần nhập các module bổ sung. Ví dụ, bạn luôn có thể gọi hàm print sẵn để xuất văn bản.

Một số hàm tích hợp sẵn ( all , any , maxmin trong số chúng) lấy các giá trị lặp lại làm đối số của chúng và trả về một giá trị duy nhất. Một iterable là một đối tượng Python có thể được “lặp qua”, nghĩa là , nó sẽ trở lại các mục trong một chuỗi như vậy mà bạn có thể sử dụng nó trong một for vòng lặp. Các hàm dựng sẵn rất hữu ích khi, chẳng hạn, bạn muốn xác định xem tất cả hoặc bất kỳ phần tử nào trong danh sách đáp ứng một tiêu chí nhất định hoặc tìm phần tử lớn nhất hoặc nhỏ nhất trong danh sách.

Trong hướng dẫn này, bạn sẽ sử dụng các hàm có sẵn all , any , maxmin .

Yêu cầu

Để tận dụng tối đa hướng dẫn này, bạn nên có:

Sử dụng all

all hàm tích hợp all kiểm tra xem mọi phần tử trong một file có thể lặp lại là True . Ví dụ:

all([True, True]) 

Nếu bạn chạy mã trước đó, bạn sẽ nhận được kết quả này:

Output
True

Trong ví dụ đầu tiên này, bạn gọi all và cung cấp cho nó một danh sách có hai phần tử (hai giá trị True Boolean). Vì mọi phần tử trong có thể lặp lại là True , kết quả là True .

all sẽ trả về False nếu một hoặc nhiều phần tử trong có thể lặp lại đã cho là False :

all([True, False, True]) 

Nếu bạn chạy mã trước đó, bạn sẽ nhận được kết quả này:

Output
False

Bạn gọi all bằng một danh sách chứa ba phần tử bao gồm một giá trị Boolean False . Vì một trong các phần tử trong có thể lặp lại là False , kết quả của lệnh gọi allFalse .

Đáng chú ý, all ngừng lặp lại và ngay lập tức trả về False ngay khi nó gặp mục nhập False đầu tiên trong một file có thể lặp lại. Vì vậy, all có thể hữu ích nếu bạn muốn kiểm tra các điều kiện liên tiếp có thể xây dựng trên nhau, nhưng trả về ngay lập tức khi một điều kiện là False .

Một trường hợp đặc biệt cần lưu ý là khi all được cung cấp một giá trị có thể lặp lại trống:

all([]) 

Nếu bạn chạy mã trước đó, bạn sẽ nhận được kết quả này:

Output
True

Khi bạn cung cấp cho all một danh sách rỗng có thể lặp lại (ví dụ: một danh sách trống như all([]) ), giá trị trả về của nó là True . Vì vậy, all trả về True nếu mọi phần tử trong biến có thể lặp lại là True hoặc có 0 phần tử.

all đặc biệt hữu ích khi kết hợp với máy phát điện và các điều kiện tùy chỉnh. Sử dụng all thường ngắn hơn và súc tích hơn so với việc bạn viết một vòng lặp for chính thức. Hãy xem xét một ví dụ để tìm hiểu xem có phần tử nào trong danh sách bắt đầu bằng "s" :

animals = ["shark", "seal", "sea urchin"] all(a.startswith("s") for a in animals) 

Nếu bạn chạy mã trước đó, bạn sẽ nhận được kết quả này:

Output
True

Bạn gọi all bằng một trình tạo làm đối số của nó. Trình tạo tạo ra một Boolean cho mỗi phần tử trong danh sách animals dựa trên việc con vật có bắt đầu bằng chữ s . Giá trị trả về cuối cùng là True vì mọi phần tử trong danh sách animals bắt đầu bằng s .

Lưu ý: Bạn thường có thể sử dụng biểu thức Generator thay cho các phần hiểu danh sách như một cách tiết kiệm bộ nhớ. Ví dụ, hãy xem xét all(i < 8 for i in range(3))all([i < 8 for i in range(3)]) . Cả hai tuyên bố trở lại True vì 0, 1, 2 đều ít hơn 8. Ví dụ thứ hai (trong đó sử dụng một danh sách hiểu biết), tuy nhiên, đã cho biết thêm overhead ngầm tạo ra một danh sách dài ba mục ( [True, True, True] ) và sau đó chuyển danh sách đó cho hàm all . Ngược lại, ví dụ đầu tiên (sử dụng biểu thức trình tạo), chuyển một đối tượng trình tạo cho hàm all , mà hàm all lặp lại trực tiếp mà không cần danh sách trung gian.

Hãy xem xét rằng mã tương đương được viết bằng vòng lặp for chính thức sẽ dài dòng hơn đáng kể:

animals = ["shark", "seal", "sea urchin"]  def all_animals_start_with_s(animals):     for a in animals:         if not a.startswith("s"):             return False     return True  print(all_animals_start_with_s(animals)) 

Nếu không có all , mã của bạn để xác định xem tất cả các con vật có bắt đầu bằng chữ s cần thêm vài dòng để triển khai.

Tiếp theo, bạn sẽ xem xét chức năng anh chị em của all : any .

Sử dụng any

Bạn có thể sử dụng any hàm tích hợp any để kiểm tra xem bất kỳ phần tử nào trong một file có thể lặp lại là True . Ví dụ:

any([False, True]) 

Nếu bạn chạy mã trước đó, bạn sẽ nhận được kết quả này:

Output
True

Bạn gọi any và cung cấp cho nó một danh sách có hai phần tử (một giá trị Boolean False và một giá trị Boolean True ). Vì một hoặc nhiều phần tử trong có thể lặp lại là True nên kết quả cũng là True .

any sẽ trả về False nếu và chỉ khi, 0 trong số các phần tử trong có thể lặp lại đã cho là True :

all([False, False, False]) 

Nếu bạn chạy mã trước đó, bạn sẽ nhận được kết quả này:

Output
False

Bạn gọi any với danh sách có ba phần tử (tất cả các giá trị Boolean False ). Vì 0 của các phần tử trong có thể lặp lại là True , kết quả của lệnh gọi anyFalse .

Đáng chú ý, any dừng lặp lại và ngay lập tức trả về True ngay khi nó gặp mục nhập True đầu tiên trong một file có thể lặp lại. Vì vậy, any có thể hữu ích nếu bạn muốn kiểm tra các điều kiện liên tiếp, nhưng trả về ngay lập tức khi một điều kiện là True .

any -like phương pháp anh chị em của nó all -là đặc biệt hữu ích khi kết hợp với máy phát điện và điều kiện tùy chỉnh (ở vị trí của một đầy đủ for vòng lặp). Hãy xem xét một ví dụ để tìm hiểu xem có phần tử nào trong danh sách kết thúc bằng "urchin" :

animals = ["shark", "seal", "sea urchin"] any(s.endswith("urchin") for s in animals) 

Bạn sẽ nhận được kết quả này:

Output
True

Bạn gọi any với một trình tạo làm đối số của nó. Trình tạo tạo Boolean cho mỗi phần tử trong danh sách animals dựa trên việc con vật đó có kết thúc bằng urchin hay không. Giá trị trả về cuối cùng là True vì một phần tử trong danh sách animals kết thúc bằng urchin .

Lưu ý: Khi any được cung cấp một giá trị lặp lại trống (ví dụ: danh sách trống như any([]) ), giá trị trả về của nó là False . Vì vậy, any trả về any False nếu có 0 phần tử trong có thể lặp lại hoặc tất cả các phần tử trong có thể lặp lại cũng là False .

Tiếp theo, bạn sẽ xem xét một hàm tích hợp khác: max .

Sử dụng max

Hàm max trả về phần tử lớn nhất được cho trong các đối số của nó. Ví dụ:

max([0, 8, 3, 1]) 

max được cung cấp một danh sách với bốn số nguyên làm đối số của nó. Giá trị trả về của max là phần tử lớn nhất trong danh sách đó: 8 .

Đầu ra sẽ như sau:

Output
8

Nếu được cung cấp hai hoặc nhiều đối số vị trí (trái ngược với một đối số vị trí duy nhất có một đối số có thể lặp lại), hàm max trả về giá trị lớn nhất trong số các đối số đã cho:

max(1, -1, 3) 

Nếu bạn chạy mã trước đó, bạn sẽ nhận được kết quả này:

Output
3

max được cung cấp ba đối số riêng lẻ, lớn nhất trong số đó là 3 . Vì vậy, giá trị trả về của lệnh gọi max3 .

Cũng giống như anyall , max đặc biệt hữu ích vì nó yêu cầu ít dòng hơn để sử dụng so với mã tương đương được viết dưới dạng vòng lặp for đầy đủ.

max cũng có thể xử lý các đối tượng phức tạp hơn số. Ví dụ: bạn có thể sử dụng max với từ điển hoặc các đối tượng tùy chỉnh khác trong chương trình của bạn . max có thể chứa các đối tượng này bằng cách sử dụng đối số từ khóa có tên là key .

Bạn có thể sử dụng đối số từ khóa key để xác định một hàm tùy chỉnh xác định giá trị được sử dụng trong các so sánh để xác định giá trị lớn nhất. Ví dụ:

entries = [{"id": 9}, {"id": 17}, {"id": 4}] max(entries, key=lambda x: x["id"]) 

Đầu ra sẽ như sau:

Output
{'id': 17}

Bạn gọi max với một danh sách các từ điển làm đầu vào của nó. Bạn cung cấp một hàm lambda ẩn danh làm đối số từ khóa key . max gọi hàm lambda cho mọi phần tử trong danh sách entries và trả về giá trị của khóa "id" của phần tử đã cho. Giá trị trả về cuối cùng là phần tử thứ hai trong entries : {"id": 17} . Phần tử thứ hai trong entries có giá trị "id" lớn nhất và do đó được coi là phần tử tối đa.

Lưu ý khi max được gọi với một giá trị có thể lặp lại trống, nó sẽ từ chối hoạt động và thay vào đó làm tăng một ValueError :

max([]) 

Nếu bạn chạy mã này, bạn sẽ nhận được kết quả sau:

Output
Traceback (most recent call last): File "max.py", line 1, in <module> max([]) ValueError: max() arg is an empty sequence

Bạn gọi max với một danh sách trống làm đối số của nó. max không chấp nhận đây là đầu vào hợp lệ và thay vào đó, tăng một Ngoại lệ ValueError .

max có một đối số gọi là min , bạn sẽ xem xét tiếp theo.

Sử dụng min

Hàm min trả về phần tử nhỏ nhất được cho trong các đối số của nó. Ví dụ:

min([8, 0, 3, 1]) 

Bạn cho min một danh sách với bốn số nguyên làm đối số của nó. Giá trị trả về của min là phần tử nhỏ nhất trong danh sách đó: 0 .

Đầu ra sẽ là:

Output
0

Nếu được cung cấp hai hoặc nhiều đối số vị trí (trái ngược với một đối số vị trí duy nhất có một đối số có thể lặp lại), min trả về giá trị nhỏ nhất trong số các đối số đã cho:

min(1, -1, 3) 

Nếu bạn chạy mã trước đó, bạn sẽ nhận được kết quả này:

Output
-1

Bạn đưa ra min ba đối số riêng lẻ, nhỏ nhất trong số đó là -1 . Vì vậy, giá trị trả về của lệnh gọi min-1 .

Giống như max , min hỗ trợ đối số từ khóa có tên là key để bạn có thể chuyển các đối tượng phức tạp hơn số vào nó. Sử dụng đối số key cho phép bạn sử dụng hàm min với bất kỳ đối tượng tùy chỉnh nào mà chương trình của bạn có thể xác định.

Bạn có thể sử dụng đối số từ khóa key để xác định hàm tùy chỉnh xác định giá trị được sử dụng trong các so sánh để xác định giá trị nhỏ nhất. Ví dụ:

entries = [{"id": 9}, {"id": 17}, {"id": 4}] min(entries, key=lambda x: x["id"]) 
Output
{'id': 4}

Bạn gọi min với một danh sách các từ điển làm đầu vào của nó. Bạn cung cấp một hàm lambda ẩn danh làm đối số từ khóa key . min gọi hàm lambda cho mọi phần tử trong danh sách entries và trả về giá trị của khóa "id" của phần tử đã cho. Giá trị trả về cuối cùng là phần tử thứ ba trong entries : {"id": 4} . Phần tử thứ ba trong entries có giá trị "id" và do đó được coi là phần tử tối thiểu.

Giống như max , khi bạn gọi min với một giá trị có thể lặp lại trống, nó sẽ từ chối hoạt động và thay vào đó làm tăng một ValueError :

min([]) 

Nếu bạn chạy mã trước đó, bạn sẽ nhận được kết quả này:

Output
Traceback (most recent call last): File "min.py", line 1, in <module> min([]) ValueError: min() arg is an empty sequence

Bạn gọi min với một danh sách trống làm đối số của nó. min không chấp nhận điều này là một đầu vào hợp lệ và thay vào đó đặt ra một Ngoại lệ ValueError .

Kết luận

Trong hướng dẫn này, bạn đã sử dụng all hàm tích hợp sẵn trong Python, all , any , maxmin . Bạn có thể tìm hiểu thêm về các hàm all , any , maxmin cũng như các hàm Python khác được tích hợp sẵn trong tài liệu Python .

Để biết thêm thông tin về các chương trình tích hợp sẵn khác của Python, bạn cũng có thể xem Các hàm tích hợp sẵn trong Python 3 để làm việc với các số , Cách sử dụng hàm bản đồ PythonCách sử dụng hàm bộ lọc Python .


Tags:

Các tin liên quan

Cách sử dụng đơn nhất để viết trường hợp thử nghiệm cho một hàm trong Python
2020-09-30
Cách chuyển đổi int thành float trong Python 3
2020-09-18
Bắt đầu với Python - Get Request
2020-09-15
Cách sử dụng f-string để tạo chuỗi trong Python 3
2020-09-10
Cách chuyển đổi số nguyên thành chuỗi trong Python 3
2020-09-03
Cách chuyển đổi chuỗi thành số nguyên trong Python 3
2020-09-03
Cách sử dụng module bộ sưu tập trong Python 3
2020-08-19
Cách chuyển đổi kiểu dữ liệu trong Python 3
2020-08-07
Cách sử dụng hàm bản đồ Python
2020-08-03
Cách sử dụng quy trình con để chạy các chương trình bên ngoài trong Python 3
2020-07-30
Làm thế nào để đánh lừa một mạng neural trong Python 3
2020-07-30