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àmprint
sẵn để xuất văn bản. Một số hàm tích hợp sẵn ( all
, any
, max
và min
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
, max
và min
.
Yêu cầu
Để tận dụng tối đa hướng dẫn này, bạn nên có:
Một số quen thuộc với lập trình bằng Python 3. Bạn có thể xem lại loạt bài hướng dẫn Cách viết mã trong Python 3 của ta để có kiến thức nền tảng.
Control panel tương tác Python, nếu bạn muốn thử mã ví dụ trong hướng dẫn này, bạn có thể sử dụng hướng dẫn Cách làm việc với Control panel tương tác Python .
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:
OutputTrue
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:
OutputFalse
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 all
là False
.
Đá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:
OutputTrue
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:
OutputTrue
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))
và 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:
OutputTrue
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:
OutputFalse
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 any
là False
.
Đá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:
OutputTrue
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:
Output8
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:
Output3
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 max
là 3
.
Cũng giống như any
và all
, 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:
OutputTraceback (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à:
Output0
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
là -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:
OutputTraceback (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
, max
và min
. Bạn có thể tìm hiểu thêm về các hàm all
, any
, max
và min
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 đồ Python và Cách sử dụng hàm bộ lọc Python .
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 Python2020-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