Computer >> Máy Tính >  >> Lập trình >> Python

Tìm phần tử nhỏ nhất lớn hơn K trong Python

Trong quá trình phân tích dữ liệu bằng python, chúng tôi gặp nhiều tình huống trong đó chúng tôi phải lọc ra các phần tử từ danh sách đáp ứng các tiêu chí nhất định. Trong bài viết này, chúng ta sẽ xem cách lấy một phần tử từ danh sách lớn hơn phần tử nhưng nhỏ nhất trong số tất cả các phần tử lớn hơn phần tử đã cho.

Với min

Chúng tôi thiết kế một vòng lặp for để đi qua từng phần tử của danh sách trong khi đáp ứng tiêu chí chung là giá trị của nó lớn hơn k. Sau đó, đối với tất cả các phần tử như vậy, chúng tôi áp dụng hàm min để nhận giá trị nhỏ nhất.

Ví dụ

listA = [1,5,6, 7,11,14]

# Original list
print("Given list : ",listA)

k = 8

# using min
res = min(i for i in listA if i > k)

# Result
print("Missing elements from the list : \n" ,res)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Minimum element gerater than k :
11

Với bộ lọc

Ở đây chúng ta sử dụng hàm lambda để lấy các phần tử có giá trị lớn hơn K. Sau đó áp dụng hàm lọc để chỉ lấy các giá trị đó. Cuối cùng, hãy áp dụng hàm min để nhận giá trị nhỏ nhất trong danh sách này.

Ví dụ

listA = [1,5,6, 7,11,14]

# printing original list
print("Given list : ",listA)

k = 8

# using min
res = min(filter(lambda i: i > k, listA))

# Result
print("Minimum element gerater than k : \n" ,res)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Minimum element gerater than k :
11

Với bisect_right

Hàm bisect_right có sẵn trong mô-đun bisect. Nó chia đôi một danh sách tại một điểm lớn hơn hoặc bằng một giá trị tham số nhất định được cung cấp cho nó. Trong ví dụ này, chúng tôi lấy danh sách, sắp xếp nó và sau đó áp dụng hàm bisect_right. Chúng tôi nhận được chỉ số của phần tử lớn hơn giá trị được yêu cầu.

Ví dụ

from bisect import bisect_right
listA = [1,5,6, 7,11,14]

# printing original list
print("Given list : ",listA)

k = 8

listA.sort()
# Using bisect_right
res = listA[bisect_right(listA, k)]

# Result
print("Minimum element gerater than k : \n" ,res)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Minimum element gerater than k :
11