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