Khi chúng ta có nhiều phần tử trong một danh sách, chúng ta có thể nghĩ đến việc tìm số lớn nhất hoặc nhỏ nhất trong danh sách. Danh sách là một tập hợp có thứ tự các phần tử được đặt trong dấu ngoặc vuông '[]' được sử dụng để lưu trữ nhiều phần tử, trong đó các phần tử có thể được truy cập bằng chỉ số của chúng. Bài viết này sẽ thảo luận về một số thuật toán để tìm số lớn thứ hai trong Python
Phạm vi
Trong bài viết này chúng ta sẽ thảo luận
- Làm thế nào chúng ta có thể tìm thấy số lớn thứ hai trong python?
- Tìm số lớn thứ hai trong Python bằng cách sắp xếp danh sách rồi in phần tử lớn thứ hai
- Tìm số lớn thứ hai trong Python bằng cách loại bỏ phần tử lớn nhất
- Tìm số lớn thứ hai trong Python bằng cách duyệt qua toàn bộ danh sách
- Tìm số lớn thứ hai trong Python bằng cách sử dụng một đống tối đa
- Một vài ví dụ điển hình để hiểu rõ hơn
Cách tìm số lớn thứ hai trong Python?
Có nhiều cách tiếp cận để tìm số lớn thứ hai trong Python. Một số cách tiếp cận được đề cập dưới đây
- Bằng cách sắp xếp danh sách và sau đó in phần tử lớn thứ hai
- Bằng cách loại bỏ phần tử tối đa
- Bằng cách duyệt qua toàn bộ danh sách
- Bằng cách sử dụng một đống tối đa
Bây giờ chúng ta sẽ thảo luận về tất cả các phương pháp từng cái một
Phương pháp 1. Bằng cách sắp xếp danh sách và sau đó in phần tử lớn thứ hai
Phương pháp này là dễ nhất trong tất cả các cách tìm số lớn thứ hai trong danh sách. Sở dĩ như vậy vì chúng ta chỉ cần sắp xếp danh sách rồi in phần tử ở chỉ số cuối cùng thứ hai
cú pháp
Thông số
Chỉ có một tham số i. e. danh sách chính nó
Ví dụ
# Method 1: Sorting the list and then printing the elements of the second last index # declaring the list lst = [] for i in range[int[input["Enter the number of elements to enter in the list: "]]]: x = int[input["Enter the element: "]] lst.append[x] def method1[lst]: lst.sort[] # sorting the list print["The second largest element of the list is: ", lst[-2]] # printing the element of the second last index method1[lst] # calling the function
đầu ra
Enter the number of elements to enter in the list: 5 Enter the element: 20 Enter the element: 10 Enter the element: 5 Enter the element: 30 Enter the element: 40 The second largest element of the list is: 30
Giải trình
Đầu tiên, chúng ta sẽ khai báo một danh sách có tên là ‘lst’, sau đó chúng ta sẽ áp dụng vòng lặp for và lấy đầu vào là các phần tử. Tại thời điểm vòng lặp mỗi khi lấy đầu vào, chúng ta sẽ nối đầu vào vào danh sách. Sau đó, chúng tôi sẽ chuyển danh sách cho một chức năng
Trong hàm, chúng ta sẽ sắp xếp mảng, sau đó chúng ta sẽ in phần tử trên chỉ số cuối cùng thứ hai i. e. sử dụng lập chỉ mục tiêu cực
Phương pháp 2. Bằng cách loại bỏ phần tử tối đa
Trong phương pháp này, chúng tôi sẽ lấy phần tử tối đa từ danh sách và xóa nó. Sau đó, chúng tôi sẽ lại lấy phần tử tối đa và in nó
cú pháp
Thông số
Một lần nữa, danh sách là tham số duy nhất được yêu cầu
Ví dụ
# Method 2: Removing the max element # declaring the list lst = [] for i in range[int[input["Enter the number of elements to enter in the list: "]]]: x = int[input["Enter the element: "]] lst.append[x] def method2[lst]: lst.remove[max[lst]] # removing max element print["The second largest element of the list is: ", max[lst]] # printing the max element method2[lst] # calling the function
đầu ra
Enter the number of elements to enter in the list: 6 Enter the element: 5 Enter the element: 7 Enter the element: 8 Enter the element: 4 Enter the element: 9 Enter the element: 6 The second largest element of the list is: 8
Giải trình
Bây giờ chúng ta hãy xem lời giải thích của đoạn mã trên
Giống như phương thức 1, chúng ta sẽ khai báo một danh sách, chứa đầy các đầu vào do người dùng lấy và chuyển nó cho một hàm có tên là 'phương thức 2' làm tham số
Trong phương pháp 2, chúng ta sẽ sử dụng hàm max để lấy phần tử max từ danh sách, sau đó chúng ta sẽ lưu nó vào một biến và xóa nó khỏi danh sách bằng cách sử dụng 'list. loại bỏ chức năng
Bây giờ phần tử tối đa đã bị xóa, chúng ta sẽ in phần tử tối đa là phần tử cuối cùng thứ hai trong danh sách
Phương pháp 3. Bằng cách duyệt toàn bộ danh sách
Trong phương pháp này, chúng tôi sẽ duyệt qua toàn bộ danh sách và sẽ duy trì hai biến để tìm phần tử lớn thứ hai trong danh sách
cú pháp
Thông số
Các tham số tương tự như được sử dụng trong các phương pháp trên
Ví dụ
# Method 3: By traversing the entire list arr = [] for i in range[int[input["Enter the number of elements to add in list: "]]]: arr.append[int[input["Enter the element: "]]] # adding elements in the list def Method3[arr]: SL_Val = arr[0] # Storing the first element of the list L_Val = arr[0] # Again storing the first element of the list for i in range[len[arr]]: if arr[i] > L_Val: # Using for loop to get the largest element from the list L_Val = arr[i] # Updting the variable with greater element for i in range[len[arr]]: if arr[i] > SL_Val and arr[i] != L_Val: SL_Val = arr[i] # Now again using for loop to get the second largest element by comparing the SL_Val with L_Val return SL_Val x = Method3[arr] print["The second largest element in the list is", x]
đầu ra
Enter the number of elements to add in list: 4 Enter the element: 87 Enter the element: 74 Enter the element: 98 Enter the element: 77 The second largest element in the list is 87
Giải trình
Chúng ta hãy xem lời giải thích cho phương pháp thứ 3
Khai báo một danh sách và điền vào nó các phần tử bằng vòng lặp for. Khai báo một biến có tên 'L_Val' để lưu trữ phần tử lớn nhất và khởi tạo nó với một phần tử trên chỉ mục đầu tiên. Khai báo một biến khác có tên SL_Val để lưu trữ phần tử lớn thứ hai và lặp lại quy trình
Duyệt qua từng phần tử và so sánh nó và tìm phần tử lớn nhất và cập nhật nó thành biến 'L_Val'. Lặp lại điều này và lần này so sánh biến 'SL_Val' với 'L_Val' và tìm biến lớn thứ hai
Cuối cùng in biến 'SL_Val'
Phương pháp 4. Bằng cách sử dụng một đống tối đa
Trong phương pháp này, chúng tôi sẽ tạo một đống tối đa từ các phần tử của danh sách và sẽ bật gốc chính xác một lần. Sau đó, chúng tôi sẽ in gốc mới là phần tử lớn thứ hai trong danh sách
cú pháp
Thông số
Danh sách chỉ là tham số bắt buộc trong hàm
Ví dụ
# Method 4: By using max heap import heapq # Implementation of max-heap class MaxHeap: def __init__[self, data=None]: if data is None: self.data = [] else: self.data = [-i for i in data] heapq.heapify[self.data] def top[self]: return -self.data[0] def push[self, item]: heapq.heappush[self.data, -item] def pop[self]: return -heapq.heappop[self.data] def replace[self, item]: return heapq.heapreplace[self.data, -item] # Function to find the 2'nd largest element in a list using max-heap def find_2nd_largest[lst]: # base case if not lst or len[lst] < 2: exit[-1] # build a max-heap from all elements in the list pq = MaxHeap[lst] # pop from max-heap exactly `1` time pq.pop[] # return the root of max-heap return pq.top[] if __name__ == '__main__': lst = [] for i in range[int[input["Enter the number of elements to enter in the list: "]]]: x = int[input["Enter the element: "]] lst.append[x] x = find_2nd_largest[lst] print['Second largest element in the list is', x]
đầu ra
Second largest element in the list is 23
Giải trình
Trong đoạn mã trên, trước tiên chúng ta cần nhập 'heapq', sau đó chúng ta sẽ triển khai maxheap và xây dựng nó từ các phần tử của danh sách
Sau đó, chúng tôi sẽ bật gốc '1' lần và lưu trữ giá trị cao nhất của maxheap trong một biến và trả về nó
Cuối cùng, chúng ta sẽ gọi hàm 'Phương thức 4' và lưu trữ giá trị trả về của nó trong một biến và in nó