Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Tìm số lớn thứ ba trong danh sách số nguyên (nếu tồn tại)


Khi cần tìm số lớn thứ ba (distinct) trong danh sách số nguyên, ta khởi tạo một danh sách ba giá trị âm vô cực (float('-inf')) để lưu ba giá trị lớn nhất riêng biệt. Duyệt qua danh sách, cập nhật ba giá trị lớn nhất. Nếu không đủ ba giá trị riêng biệt, trả về số lớn nhất.

Ví dụ

Minh họa:

def third_max_num(my_num):
    my_result = [float('-inf'), float('-inf'), float('-inf')]
    for num in my_num:
        if num not in my_result:
            if num > my_result[0]:
                my_result = [num, my_result[0], my_result[1]]
            elif num > my_result[1]:
                my_result = [my_result[0], num, my_result[1]]
            elif num > my_result[2]:
                my_result = [my_result[0], my_result[1], num]
    if float('-inf') in my_result:
        print(max(my_num))
    else:
        print(my_result[2])

my_list = [45, 31, 78, 9, 0, 54, 12, 18]
print("Danh sách:", my_list)
print("Số lớn thứ ba:")
third_max_num(my_list)

Kết quả

Danh sách: [45, 31, 78, 9, 0, 54, 12, 18]
Số lớn thứ ba: 45

Giải thích

  • Định nghĩa phương thức third_max_num nhận danh sách.
  • Khởi tạo danh sách my_result ba giá trị -inf.
  • Duyệt qua từng số: nếu số chưa có trong my_result, so sánh và cập nhật ba giá trị lớn nhất.
  • Sau duyệt, nếu vẫn còn -inf nghĩa là không đủ 3 giá trị riêng biệt -> in max của danh sách gốc.
  • Ngược lại in giá trị thứ 3 (index 2).