Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาองค์ประกอบที่เล็กที่สุดที่มากกว่า K ใน Python


ในระหว่างการวิเคราะห์ข้อมูลโดยใช้ python เราพบสถานการณ์มากมายที่เราต้องกรององค์ประกอบออกจากรายการที่ตรงตามเกณฑ์บางอย่าง ในบทความนี้ เราจะมาดูวิธีรับองค์ประกอบจากรายการที่มากกว่าองค์ประกอบแต่เล็กที่สุดในบรรดาองค์ประกอบดังกล่าวทั้งหมดซึ่งมากกว่าองค์ประกอบที่กำหนด

มีขั้นต่ำ

เราออกแบบ for loop เพื่อผ่านแต่ละองค์ประกอบของรายการในขณะที่ตรงตามเกณฑ์ทั่วไปของค่าที่มากกว่า k จากนั้นสำหรับองค์ประกอบดังกล่าวทั้งหมด เราใช้ฟังก์ชัน min เพื่อรับค่าต่ำสุด

ตัวอย่าง

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)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Minimum element gerater than k :
11

มีฟิลเตอร์

ที่นี่เราใช้ฟังก์ชันแลมบ์ดาเพื่อรับองค์ประกอบที่มีค่ามากกว่า K จากนั้นใช้ฟังก์ชันตัวกรองเพื่อรับเฉพาะค่าเหล่านั้น สุดท้ายใช้ฟังก์ชัน min เพื่อรับค่าต่ำสุดจากรายการนี้

ตัวอย่าง

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)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Minimum element gerater than k :
11

กับ bisect_right

ฟังก์ชัน bisect_right มีอยู่ในโมดูล bisect มันแบ่งรายการที่จุดที่มากกว่าหรือเท่ากับค่าพารามิเตอร์ที่กำหนดให้กับมัน ในตัวอย่างนี้ เรานำรายการ เรียงลำดับ แล้วใช้ฟังก์ชัน bisect_right เราได้รับดัชนีขององค์ประกอบที่มากกว่าค่าที่ต้องการ

ตัวอย่าง

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)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Minimum element gerater than k :
11