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

Python: หาดัชนีของสมาชิกแรกที่มากกว่า K

ค่าของรายการในลิสต์ 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 วิธีแรกมีประสิทธิภาพดีที่สุด (หยุดทันทีที่เจอ)