Python max(): Tìm 'Trùm Cuối' trong List của Gen Z
Python

Python max(): Tìm 'Trùm Cuối' trong List của Gen Z

Author

Admin System

@root

Ngày xuất bản

19 Mar, 2026

Lượt xem

1 Lượt

max

1. max(): Tìm 'Trùm Cuối' trong List của Gen Z

Chào các bạn Gen Z, Creyt đây! Hôm nay chúng ta sẽ 'bóc tách' một 'công cụ' siêu tiện lợi trong Python mà chắc chắn bạn sẽ dùng như cơm bữa: hàm max(). Đơn giản mà nói, max() giống như 'AI' chuyên đi tìm 'trùm cuối' hay 'main character' trong một nhóm các 'ứng viên' vậy. Nó sẽ trả về phần tử có giá trị lớn nhất trong một iterable (như list, tuple, set, string) hoặc so sánh giữa nhiều đối số riêng lẻ.

Để làm gì ư? Tưởng tượng bạn có một danh sách điểm thi, bạn muốn biết ai là người đạt điểm cao nhất mà không cần phải 'lướt' từng người một. Hay bạn có một 'kho' dữ liệu về các sản phẩm, bạn muốn tìm sản phẩm đắt nhất, review cao nhất, hoặc bán chạy nhất. max() chính là 'thám tử' bạn cần để 'chỉ mặt đặt tên' ngay lập tức!

2. Code Ví Dụ Minh Hoạ

Xem Creyt 'phù phép' với max() nhé:

Cơ bản nhất: Tìm số lớn nhất

# Tìm điểm số cao nhất trong một nhóm điểm
diem_thi = [85, 92, 78, 95, 88]
diem_cao_nhat = max(diem_thi)
print(f"Điểm thi cao nhất là: {diem_cao_nhat}") # Output: 95

# So sánh trực tiếp giữa các đối số
gia_sp_1 = 150000
gia_sp_2 = 230000
gia_sp_3 = 180000
gia_max = max(gia_sp_1, gia_sp_2, gia_sp_3)
print(f"Sản phẩm đắt nhất có giá: {gia_max}") # Output: 230000

Với chuỗi (string): So sánh theo thứ tự từ điển (lexicographical)

# Tìm chuỗi 'lớn nhất' theo thứ tự bảng chữ cái
danh_sach_ten = ["Alice", "Bob", "Charlie", "David"]
ten_lon_nhat = max(danh_sach_ten)
print(f"Tên 'lớn nhất' theo bảng chữ cái: {ten_lon_nhat}") # Output: David

'Level up' với đối số key: Khi bạn muốn tìm 'trùm cuối' theo tiêu chí riêng

Đây mới là lúc max() thực sự 'tỏa sáng' và thể hiện 'trí tuệ Harvard' của nó. Đối số key cho phép bạn cung cấp một hàm để 'biến đổi' mỗi phần tử trước khi so sánh. max() sẽ tìm phần tử mà sau khi 'biến đổi' bởi hàm key thì có giá trị lớn nhất, nhưng nó sẽ trả về phần tử gốc chứ không phải giá trị đã biến đổi.

# Tìm chuỗi dài nhất trong danh sách
danh_sach_tu = ["apple", "banana", "kiwi", "pineapple", "grape"]
tu_dai_nhat = max(danh_sach_tu, key=len) # key=len sẽ dùng độ dài của chuỗi để so sánh
print(f"Từ dài nhất là: {tu_dai_nhat}") # Output: pineapple

# Tìm sinh viên có điểm số cao nhất từ danh sách dictionary
sinh_vien = [
    {"ten": "An", "diem": 85, "lop": "A"},
    {"ten": "Binh", "diem": 92, "lop": "B"},
    {"ten": "Cuong", "diem": 78, "lop": "A"},
    {"ten": "Dung", "diem": 95, "lop": "C"}
]

sinh_vien_xuat_sac = max(sinh_vien, key=lambda sv: sv['diem'])
print(f"Sinh viên xuất sắc nhất: {sinh_vien_xuat_sac['ten']} với điểm {sinh_vien_xuat_sac['diem']}")
# Output: Sinh viên xuất sắc nhất: Dung với điểm 95

# Tìm sản phẩm có giá trị giảm giá tốt nhất (giảm nhiều nhất)
san_pham = [
    {"ten": "Laptop", "gia_goc": 20000000, "gia_ban": 18000000},
    {"ten": "Điện thoại", "gia_goc": 10000000, "gia_ban": 8500000},
    {"ten": "Tai nghe", "gia_goc": 2000000, "gia_ban": 1500000}
]

san_pham_giam_gia_tot_nhat = max(san_pham, key=lambda sp: sp['gia_goc'] - sp['gia_ban'])
print(f"Sản phẩm giảm giá tốt nhất: {san_pham_giam_gia_tot_nhat['ten']}")
# Output: Sản phẩm giảm giá tốt nhất: Laptop (giảm 2 triệu)
Illustration

3. Mẹo (Best Practices) để ghi nhớ và dùng thực tế

  • key là 'chìa khóa': Hãy nhớ rằng sức mạnh thực sự của max() nằm ở đối số key. Nó cho phép bạn 'tùy chỉnh' cách so sánh, biến max() thành một công cụ cực kỳ linh hoạt để tìm kiếm 'trùm cuối' theo bất kỳ tiêu chí nào bạn đặt ra. Đây là điểm phân biệt giữa người dùng 'biết code' và người dùng 'hiểu code'.

  • Lambda là 'đồ chơi' của key: Khi dùng key, thường thì lambda functions sẽ là 'bạn thân' của bạn. Chúng giúp bạn viết các hàm key nhỏ, nhanh gọn ngay tại chỗ mà không cần định nghĩa một hàm riêng biệt.

  • Cẩn thận với iterable rỗng: Nếu bạn truyền một iterable rỗng (ví dụ: []) vào max() mà không có giá trị mặc định, Python sẽ 'quăng' cho bạn một ValueError. Để tránh điều này, bạn có thể cung cấp một đối số default (chỉ từ Python 3.4 trở lên) hoặc kiểm tra trước khi gọi max().

    # Với default argument (Python 3.4+)
    empty_list = []
    max_val = max(empty_list, default=0)
    print(f"Giá trị lớn nhất (với default): {max_val}") # Output: Giá trị lớn nhất (với default): 0
    
    # Kiểm tra trước
    if empty_list:
        max_val_checked = max(empty_list)
    else:
        max_val_checked = None # Hoặc một giá trị mặc định khác
    print(f"Giá trị lớn nhất (kiểm tra trước): {max_val_checked}") # Output: Giá trị lớn nhất (kiểm tra trước): None
    

4. Văn phong học thuật sâu của Harvard, dạy dễ hiểu tuyệt đối

Từ góc độ khoa học máy tính, hàm max() là một ví dụ điển hình của thuật toán duyệt tuyến tính (linear scan). Nó hoạt động bằng cách duyệt qua tất cả các phần tử trong một tập hợp (iterable) chỉ một lần duy nhất, giữ lại phần tử lớn nhất được tìm thấy cho đến thời điểm hiện tại. Độ phức tạp thời gian của max() là O(n), trong đó 'n' là số lượng phần tử. Điều này có nghĩa là thời gian thực thi của nó tăng tuyến tính theo kích thước của dữ liệu đầu vào. Đây là một thuật toán cực kỳ hiệu quả cho việc tìm kiếm cực trị khi không yêu cầu sắp xếp toàn bộ tập hợp, vì sắp xếp thường có độ phức tạp thời gian ít nhất là O(n log n). Việc sử dụng đối số key không làm thay đổi độ phức tạp thời gian cơ bản này, nó chỉ thêm một chi phí nhỏ cho mỗi lần so sánh bằng cách gọi hàm key trên mỗi phần tử.

5. Ví dụ thực tế các ứng dụng/website đã ứng dụng

  • E-commerce (Shopee, Tiki, Lazada): Khi bạn lọc sản phẩm theo "Giá cao nhất", "Đánh giá cao nhất", "Bán chạy nhất", các hệ thống này thường dùng các hàm tương tự max() (hoặc các truy vấn cơ sở dữ liệu tương đương) để tìm và hiển thị sản phẩm phù hợp. Ví dụ: tìm sản phẩm có rating cao nhất, hoặc sold_count cao nhất.
  • Social Media (Facebook, TikTok, Instagram): Để xác định "Bài viết thịnh hành nhất" (trending post) hay "Video viral nhất" dựa trên số lượt tương tác (likes, shares, comments), thuật toán sẽ dùng các tiêu chí tương tự như key trong max() để đánh giá và chọn ra nội dung có 'điểm số' tổng hợp cao nhất.
  • Game Leaderboards: Các bảng xếp hạng người chơi có điểm cao nhất, thời gian hoàn thành nhanh nhất, hoặc số kill nhiều nhất đều là ứng dụng trực tiếp của việc tìm giá trị cực đại trong một tập hợp dữ liệu.
  • Hệ thống đề xuất (Netflix, Spotify): Khi đề xuất "phim/bài hát được yêu thích nhất" trong một thể loại cụ thể, hệ thống sẽ tìm kiếm các mục có điểm số phù hợp cao nhất dựa trên sở thích của người dùng và các yếu tố khác.

6. Thử nghiệm đã từng và hướng dẫn nên dùng cho case nào

Creyt đã từng dùng max() trong một dự án phân tích dữ liệu nhỏ để tìm ra ngày có doanh thu cao nhất trong một tháng, hay tìm khách hàng có tổng chi tiêu lớn nhất. Nó cực kỳ hữu ích khi bạn cần:

  • Tìm giá trị cực đại đơn giản: Khi bạn chỉ cần con số lớn nhất, chữ cái cuối cùng trong bảng chữ cái, hoặc giá trị lớn nhất theo thứ tự mặc định.
  • Tìm đối tượng 'tốt nhất' theo tiêu chí cụ thể: Đây là lúc key phát huy tác dụng. Bạn có một list các đối tượng phức tạp (sinh viên, sản phẩm, dữ liệu cảm biến) và muốn tìm đối tượng 'tốt nhất' dựa trên một thuộc tính nào đó của nó (điểm số, giá, nhiệt độ cao nhất, v.v.).
  • Tối ưu hóa hiệu suất: Thay vì sắp xếp toàn bộ danh sách (mà có thể tốn kém hơn nhiều) rồi lấy phần tử cuối cùng, max() cung cấp một giải pháp hiệu quả hơn khi bạn chỉ cần giá trị cực đại.

Khi nào không nên dùng? Nếu bạn cần tất cả các giá trị lớn nhất (ví dụ: top 3 sinh viên điểm cao nhất), hoặc bạn cần một danh sách đã sắp xếp hoàn chỉnh, thì max() không phải là lựa chọn duy nhất. Lúc đó bạn có thể cân nhắc dùng sorted() kết hợp với slicing, hoặc các thuật toán sắp xếp khác.

Nhớ nhé Gen Z, max() không chỉ là một hàm, nó là một 'siêu năng lực' giúp bạn 'tóm gọn' được những 'trùm cuối' trong mọi 'cuộc chơi' dữ liệu của mình! Keep coding!

Thuộc Series: Python

Bài giảng này được tự động xuất bản ngẫu nhiên từ thư viện kiến thức. Đừng quên đón xem các Từ khoá Hướng Dẫn tiếp theo nhé!

#tech #cyberpunk #laravel
Chỉnh sửa bài viết

Bình luận (0)

Vui lòng Đăng Nhập để Bình luận

Hỗ trợ Markdown cơ bản
Nguyễn Văn A
1 ngày trước

Tính năng này đỉnh quá ad ơi, chờ mãi mới thấy một blog Tiếng Việt có UI/UX xịn như vầy!