Làm cách nào để tìm số lớn thứ hai trong một tập hợp trong python?

Khi chúng ta có nhiều phần tử trong danh sách của mình, ý nghĩ tìm phần tử cao nhất hoặc thấp nhất có thể xuất hiện trong đầu chúng ta và Python đã giúp chúng ta dễ dàng hơn nhiều. Trong bài viết này, chúng ta sẽ tìm hiểu cách chúng ta có thể sử dụng để tìm số lớn thứ hai trong Python từ một danh sách

  1. Sắp xếp danh sách và sau đó in số cuối cùng thứ hai
  2. Loại bỏ phần tử tối đa
  3. Tìm phần tử lớn nhất
  4. Duyệt qua danh sách

Chúng ta hãy xem cách tiếp cận đầu tiên-

Làm cách nào để tìm số lớn thứ hai trong Python? Ví dụ –

#program to find the second largest number of list.
 # declaring the list. list_val = [20, 30, 40, 25, 10]
  # sorting the list. list_val.sort[]
 #displaying the second last element of the list. print["The second largest element of the list is:", list_val[-2]]

Sắp xếp danh sách và sau đó in số cuối cùng thứ hai

Chương trình sau minh họa cách chúng ta có thể làm điều đó trong Python-

Ví dụ -

#program to find the second largest number of list  
# declaring the list  
list_val = [20, 30, 40, 25, 10]  
# sorting the list  
list_val.sort[]  
#displaying the second last element of the list  
print["The second largest element of the list is:", list_val[-2]]  

đầu ra

The second largest element of the list is: 30

Đã đến lúc chuyển sang phần giải thích-

  1. Chúng tôi đã khai báo danh sách mà chúng tôi muốn lấy ra phần tử cuối cùng thứ hai
  2. Sau này, chúng tôi đã sử dụng phương pháp sắp xếp để tất cả các phần tử trong danh sách của chúng tôi được sắp xếp theo thứ tự tăng dần
  3. Bây giờ chúng tôi sử dụng lập chỉ mục phủ định vì số lớn thứ hai sẽ đứng ở vị trí cuối cùng thứ hai

Phương pháp thứ hai là lấy phần tử lớn thứ hai của danh sách bằng cách loại bỏ phần tử lớn nhất. Hãy để chúng tôi xem làm thế nào chúng ta có thể làm điều đó

Loại bỏ phần tử tối đa

Ví dụ -

#program to find the second largest number of list  
  
# declaring the list  
list_val = [20, 30, 40, 25, 10]  
  
# new_list is a set of list1  
res_list = set[list_val]  
  
#removing the maximum element  
res_list.remove[max[res_list]]  
  
#printing the second largest element   
print[max[res_list]]  

đầu ra

30

Giải trình -

Hãy cho chúng tôi hiểu những gì chúng tôi đã làm trong chương trình trên-

  1. Chúng tôi đã khai báo danh sách mà chúng tôi muốn lấy ra phần tử cuối cùng thứ hai
  2. Sau đó, chúng tôi đã sử dụng phương thức set để lấy tất cả các phần tử duy nhất của danh sách
  3. Bây giờ chúng tôi sử dụng max[] để lấy giá trị lớn nhất từ ​​​​danh sách và sau đó loại bỏ nó
  4. Sau đó, chúng tôi in tối đa danh sách kết quả sẽ cung cấp cho chúng tôi số lớn thứ hai

Trong phương pháp thứ ba, chúng ta sẽ sử dụng vòng lặp for và tìm số lớn thứ hai trong danh sách

Ví dụ -

# declaring empty list  
list_val = []  
  
# user provides the number of elements to be added in the list  
num_list = int[input["Enter number of elements in list: "]]  
  
  
for i in range[1, num_list + 1]:  
    element = int[input["Enter the elements: "]]  
    list_val.append[element]  
  
  
# sort the list  
list_val.sort[]  
      
# print second largest element  
print["Second largest element is:", list_val[-2]]  

đầu ra

Enter number of elements in list: 5

Enter the elements: 10

Enter the elements: 20

Enter the elements: 30

Enter the elements: 40

Enter the elements: 50
The second largest element is: 40

Giải trình -

Hãy để chúng tôi xem qua những gì chúng tôi đã làm ở đây-

  1. Chúng tôi đã khai báo một danh sách trống trong đó chúng tôi sẽ chèn các phần tử
  2. Sau đó, chúng tôi yêu cầu người dùng cung cấp cho chúng tôi số lượng phần tử mà chúng tôi muốn thêm vào danh sách của mình
  3. Sau đó, chúng tôi sử dụng phương pháp sắp xếp để tất cả các phần tử trong danh sách của chúng tôi được sắp xếp theo thứ tự tăng dần
  4. Bây giờ chúng tôi sử dụng lập chỉ mục phủ định vì số lớn thứ hai sẽ đứng ở vị trí cuối cùng thứ hai

Duyệt qua danh sách

Trong chương trình cuối cùng, chúng ta sẽ duyệt qua danh sách để tìm ra số lớn nhất và sau đó sử dụng các câu lệnh điều kiện để tìm số lớn thứ hai trong danh sách

Chương trình sau đây minh họa tương tự-

Ví dụ -

def calc_largest[arr]:  
    second_largest = arr[0]  
    largest_val = arr[0]  
    for i in range[len[arr]]:  
        if arr[i] > largest_val:  
            largest_val = arr[i]  
  
    for i in range[len[arr]]:  
        if arr[i] > second_largest and arr[i] != largest_val:  
            second_largest = arr[i]  
  
    return second_largest  
print[calc_largest[[20, 30, 40, 25, 10]]]  

đầu ra

30

Giải trình -

Hãy cho chúng tôi hiểu những gì chúng tôi đã làm trong chương trình trên-

  1. Bước đầu tiên là tạo một hàm kiểm tra số lớn nhất trong danh sách bằng cách duyệt qua nó
  2. Trong vòng lặp for tiếp theo, chúng tôi duyệt lại danh sách để tìm số cao nhất nhưng lần này loại trừ số trước đó vì ở đây mục tiêu của chúng tôi là tìm hàm lớn thứ hai
  3. Cuối cùng, chúng tôi chuyển danh sách của mình vào hàm

Chương trình Python 1

Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên

#second largest number in list

#function
def second_largest[list]:
    list.sort[]
    return list[-2]

#input of list
li=[]
n=int[input["Enter size of list "]]
for i in range[0,n]:
    e=int[input["Enter element of list "]]
    li.append[e]

#smallest
print["second largest in ",li,"is"]
print[second_largest[li]]           

Sao chép

Nhập kích thước danh sách 5 Nhập phần tử danh sách 8 Nhập phần tử danh sách 3 Nhập phần tử danh sách 1 Nhập phần tử danh sách 9 Nhập phần tử danh sách 5 lớn thứ hai trong [8, 3, 1, 9, 5] là 8

Để lấy phần tử ở chỉ mục cuối cùng thứ hai, chúng tôi đã sử dụng lập chỉ mục phủ định

Cách tiếp cận 2. Bằng cách xóa số tối đa khỏi danh sách

Theo cách tiếp cận này, trước tiên chúng ta sẽ tìm phần tử lớn nhất trong danh sách bằng cách sử dụng hàm max[] tích hợp. Sau khi nhận được số lớn nhất, chúng tôi sẽ xóa nó khỏi danh sách bằng danh sách. remove[] sẽ xóa phần tử khỏi danh sách. Sau đó, gọi lại hàm max[] để lấy số tối đa hiện tại trong danh sách. Đây sẽ là phần tử lớn thứ hai trong danh sách

thuật toán

Thực hiện theo thuật toán để hiểu cách tiếp cận tốt hơn

Bước 1- Khai báo hàm tìm số lớn thứ hai

Bước 2- Sử dụng phương thức max[] và lưu trữ giá trị mà nó trả về trong một biến

Bước 3- Xóa phần tử lớn nhất khỏi danh sách

Bước 4- Gọi lại hàm max[] và lưu phần tử lớn nhất vào biến

Bước 5- Trả về biến, đây sẽ là phần tử lớn thứ hai

Bước 6- Khai báo danh sách và lấy giá trị đầu vào hoặc khởi tạo

Bước 7- Gọi hàm

Bước 8- In giá trị trả về của hàm

Chương trình Python

Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên

#program to find the second largest number of list  
# declaring the list  
list_val = [20, 30, 40, 25, 10]  
# sorting the list  
list_val.sort[]  
#displaying the second last element of the list  
print["The second largest element of the list is:", list_val[-2]]  
0

Sao chép

Nhập kích thước danh sách 4 Nhập phần tử danh sách 9 Nhập phần tử danh sách 3 Nhập phần tử danh sách 6 Nhập phần tử danh sách 1 lớn thứ hai trong [9, 3, 6, 1] là 6

Cách tiếp cận 3. Cách tiếp cận vũ phu

Trong cách tiếp cận này, chúng tôi sẽ làm theo cách tiếp cận Brute-force. Đây là một thuật toán tìm kiếm toàn diện trong đó tất cả các giải pháp thử nghiệm có thể được kiểm tra để có được giải pháp tối ưu

thuật toán

Thực hiện theo thuật toán để hiểu cách tiếp cận tốt hơn

Bước 1- Xác định hàm tìm số lớn thứ hai trong danh sách

Bước 2- Khai báo biến và lưu giá trị lớn nhất, nhỏ nhất giữa phần tử thứ nhất và phần tử thứ hai trong danh sách

Bước 3- Tìm độ dài của danh sách bằng len[] và lưu trữ trong n

Bước 4- Chạy một vòng lặp từ 2 đến n

Bước 5- Kiểm tra xem phần tử danh sách có lớn hơn mức tối đa hay không, nếu đúng thì cập nhật tối đa thứ hai thành tối đa và đặt phần tử danh sách là tối đa

Bước 6- Mặt khác, nếu phần tử danh sách lớn hơn số tối đa thứ hai thì hãy cập nhật phần tử danh sách thành số tối đa thứ hai

Bước 7- Trả về phần tử tối đa thứ hai

Bước 8- Khai báo danh sách và lấy giá trị đầu vào hoặc giá trị khởi tạo

Bước 9- Gọi hàm

Bước 10- In giá trị trả về của hàm

Chương trình Python

Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên

#program to find the second largest number of list  
# declaring the list  
list_val = [20, 30, 40, 25, 10]  
# sorting the list  
list_val.sort[]  
#displaying the second last element of the list  
print["The second largest element of the list is:", list_val[-2]]  
1

Sao chép

Nhập kích thước danh sách 7 Nhập phần tử danh sách 3 Nhập phần tử danh sách 9 Nhập phần tử danh sách 12 Nhập phần tử danh sách 45 Nhập phần tử danh sách 2 Nhập phần tử danh sách 3 Nhập phần tử danh sách 0 lớn thứ hai trong [3, 9, 12,

Phần kết luận

Trong hướng dẫn này, chúng ta đã thảo luận các cách tiếp cận khác nhau để tìm phần tử lớn thứ hai trong danh sách. Chúng tôi đã thảo luận về ba cách tiếp cận - sử dụng các phần tử danh sách được sắp xếp để in phần tử cuối cùng thứ hai, bằng cách loại bỏ phần tử lớn nhất khỏi danh sách và sau đó tìm phần tử lớn nhất trong danh sách và cuối cùng, chúng tôi đã sử dụng phương pháp Brute-force để lấy phần tử lớn thứ hai

Chủ Đề