01/08/2019, 16:50

Hàm max() trong Python

Hàm max() được tích hợp sẵn trong Python trả về phần tử lớn nhất trong một iterable hoặc lớn nhất trong những tham số truyền vào. Nếu các giá trị là các chuỗi sẽ so sánh theo thứ tự chữ cái alphabet. Cú pháp hàm max() trong Python Hàm max() trong Python có 2 dạng: max(iterable, ...

Hàm max() được tích hợp sẵn trong Python trả về phần tử lớn nhất trong một iterable hoặc lớn nhất trong những tham số truyền vào.

Nếu các giá trị là các chuỗi sẽ so sánh theo thứ tự chữ cái alphabet.

Hàm max() trong Python

Cú pháp hàm max() trong Python

Hàm max() trong Python có 2 dạng:

max(iterable, *iterables[,key, default])
 

Hoặc:

max(item1, item2, *item[, key])
 

Các tham số của hàm max()

Hàm max() làm việc với hai dạng tham số tương ứng với hai cú pháp đã nêu ở trên:

1. max(iterable, *iterables[, key, default])

  • iterable: Bắt buộc. Các tuple, string, set, dictionary hoặc đối tượng iterator mà bạn cần tìm phần tử lớn nhất trong đó.
  • *iterables: Tùy chọn. Iterable nào lớn nhất sẽ được trả về.
  • key: Tùy chọn. Key function, nơi các iterable đi qua. Phép so sánh được thực hiện dựa trên kết quả trả về sau khi đi qua key function.
  • default: Tùy chọn. Giá trị mặc định khi iterable trống.

2. max(item1, item2, *item[, key])

  • item1, item2: Bắt buộc. Đối tượng để so sánh, có thể là number, string...
  • *item: Tùy chọn. Các đối tượng khác để so sánh.
    
ightarrow Cần ít nhất hai đối tượng để thực hiện so sánh với hàm max().
  • key: Tùy chọn. Key function, nơi các item đi qua. Phép so sánh được thực hiện trên kết quả trả về sau khi đi qua key function.

Giá trị trả về từ max()

Hàm max trả về kết quả khác nhau tương ứng với hai loại như trên:

1. max(iterable, *iterables[, key, default])

Trường hợp Key Default Giá trị trả về
 Iterable trống  Có hoặc Không  Không có  Sinh ra ngoại lệ ValueError 
 Iterable trống  Có  Có  Trả về giá trị Default 
 Một iterable (không trống)  Không  Có hoặc Không  Trả về số lớn nhất trong iterable
 Một iterable (không trống)  Có  Có hoặc Không  Truyền từng phần tử trong iterable cho hàm key, kết quả trả về là phần tử lớn nhất dựa trên giá trị trả về từ hàm key
 Nhiều iterable (không trống)  Không  Có hoặc Không  Trả về iterable lớn nhất 
 Nhiều iterable (không trống)  Có  Có hoặc Không  Truyền từng iterable cho hàm key. Kết quả trả về là iterable lớn nhất dựa trên giá trị trả về từ hàm key

2. max(item1, item2, *item[, key])

Trường hợp Key Giá trị trả về
 2 item  Không   Trả về tham số lớn hơn
 2 item  Có  Truyền từng tham số cho hàm key, kết quả trả về là phần tử lớn hơn dựa trên giá trị trả về từ hàm key
 Nhiều item  Không  Trả về tham số lớn nhất
 Nhiều item  Có  Truyền từng tham số cho hàm key, kết quả trả về là phần tử lớn nhất dựa trên giá trị trả về từ hàm key

Ví dụ 1: Tìm phần tử lớn nhất trong các số truyền vào

# su dung max(item1, item2, *item)
 print('So lon nhat la:', max(1, 3, 2, 5, 4))
 
 # su dung max(iterable)
 num = [1, 3, 2, 8, 5, 10, 6]
 print('So lon nhat la:', max(num))

Chạy chương trình, kết quả trả về là:

So lon nhat la: 5
 So lon nhat la: 10

Ví dụ 2: Tìm số có tổng các chữ số lớn nhất bằng cách sử dụng key function

def sumDigit(num):
     sum = 0
     while(num):
         sum += num % 10
         num = int(num / 10)
     return sum
 
 # su dung max(item1, item2, *item, key)
 print('Ket qua lon nhat la:', max(100, 321, 267, 59, 40, key=sumDigit))
 
 # su dung max(iterable, key)
 num = [15, 300, 2700, 821, 52, 10, 6]
 print('Ket qua lon nhat la:', max(num, key=sumDigit))

Output trả về là:

Ket qua lon nhat la: 267
 Ket qua lon nhat la: 821

Ở ví dụ này, các tham số hoặc từng phần tử trong tham số iterable được truyền lần lượt vào sumDigit() để lấy kết quả là số có tổng các chữ số lớn nhất.

Ví dụ 3: Tìm list có độ dài lớn nhất bằng cách sử dụng key function

num = [15, 300, 2700, 821]
 num1 = [12, 2]
 num2 = [34, 567, 78]
 
 # su dung max(iterable, *iterables, key)
 print('List dai nhat la:', max(num, num1, num2, key=len))

Kết quả trả về:

List dai nhat la: [15, 300, 2700, 821]

Trong chương trình trên, các iterable num, num1 và num2 được truyền vào key function là hàm len() tích hợp sẵn trong Python. Kết quả trả về là độ dài từng iterable và hàm max sẽ đưa ra iterable có độ dài lớn nhất.

0