ค่าของรายการในลิสต์ Python ไม่จำเป็นต้องเรียงลำดับ อีกทั้งอาจมีสถานการณ์ที่เราสนใจเฉพาะค่าที่มากกว่าค่าเฉพาะ ในบทความนี้เราจะดูวิธีหา
ใช้ Enumeration
ใช้ enumeration เราได้ทั้งดัชนีและค่าของสมาชิกในลิสต์ แล้วนำเงื่อนไขมากกว่าไปใช้ เพื่อได้สมาชิกแรกที่เงื่อนไขเป็นจริง ฟังก์ชัน next จะวนผ่านแต่ละสมาชิกทีละตัว
ตัวอย่าง
List = [21, 10, 24, 40.5, 11]
print("Given list:", str(List))
# ใช้ next() + enumerate()
result = next(k for k, value in enumerate(List) if value > 25)
print("Index is:", result)
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้
ผลลัพธ์
Given list: [21, 10, 24, 40.5, 11] Index is: 3
ใช้ Filter และ Lambda Functions
ในตัวอย่างถัดไปเราใช้ lambda function เปรียบเทียบค่าที่กำหนดกับค่าที่แต่ละดัชนี แล้วกรองเฉพาะที่ผ่านเงื่อนไข จากลิสต์สมาชิกที่ผ่านเงื่อนไข เราเลือกสมาชิกแรกที่ดัชนี 0 เป็นคำตอบ
ตัวอย่าง
List = [21, 10, 24, 40.5, 11]
print("Given list:", str(List))
# ใช้ filter() + lambda
result = list(filter(lambda k: k > 25, List))[0]
print("Index is:", List.index(result))
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้
ผลลัพธ์
Given list: [21, 10, 24, 40.5, 11] Index is: 3
ใช้ Map และ Lambda
ในตัวอย่างถัดไปเราใช้แนวทางคล้ายกันแต่ใช้ map แทน filter ฟังก์ชัน map ใช้วนผ่านแต่ละสมาชิก ทุกครั้งที่เงื่อนไขเป็นจริง ดัชนีนั้นจะถูกบันทึก
ตัวอย่าง
List = [21, 10, 24, 40.5, 11]
print("Given list:", str(List))
result = list(map(lambda k: k > 25, List)).index(True)
print("Index is:", (result))
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้
ผลลัพธ์
Given list: [21, 10, 24, 40.5, 11] Index is: 3
สรุป: มีหลายวิธีหาดัชนีสมาชิกแรกที่มากกว่า K: next+enumerate, filter+lambda, map+lambda วิธีแรกมีประสิทธิภาพดีที่สุด (หยุดทันทีที่เจอ)