ผ่าน indexing สามารถดึง item หรือช่วง items จาก list ได้ สามารถดึง specific item ได้ก็ต่อเมื่อรู้ index number ที่สัมพันธ์กับค่านั้น
หา index value ของ largest item ใน list ใช้ max() และ index() methods คู่มือนี้เดินทางผ่านโปรแกรมที่ดึง index value ของ maximum element ใน list
Python: ดึง Index Value ของ Max Value ใน List
เขียนโปรแกรมดึงชื่อนักเรียนที่ได้เกรดสูงสุดในสอบคณิตศาสตร์ล่าสุด ชื่อจะถูกพิมพ์คอนโซล
เริ่มสร้าง 2 ลิสต์:
students = ["Andy", "April", "Julia", "Gary"] grades = [75, 82, 64, 68]
ลิสต์แรก: ชื่อนักเรียน ลิสต์ที่สอง: เกรดของแต่ละคน
ลิสต์ทั้ง 2 เป็น parallel arrays หมายถึง size เท่ากัน และแต่ละค่าแทนส่วนของ record "students" มีชื่อ "grades" มีเกรดที่นักเรียนได้
ต่อไป หาเกรดสูงสุดในลิสต์ ใช้ max() function หาเกรดสูงสุด:
largest = max(grades)
โค้ดดึงตัวเลขมากที่สุด ยังไม่ ideal คุณต้องการ index position ของตัวเลขมากที่สุด ใช้ built-in function อีกตัว: index() ดึง index value ของ largest item:
index_of_largest = grades.index(largest)
เพราะ 2 ลิสต์เป็น parallel index number ของ highest grade ใน "grades" list เท่ากับ index number ของนักเรียนที่ได้เกรดนั้นใน "students" list
พิมพ์ข้อความคอนโซล บอกว่าใครได้เกรดสูงสุด:
print("{} earned the highest grade in the class. Their grade was {}.".format(students[index_of_largest], largest))
ใช้ indexing syntax ดึงชื่อนักเรียนที่ได้เกรดสูงสุด ใส่ค่านี้และเกรดเข้า string
รันโปรแกรม:
April earned the highest grade in the class. Their grade was 82.
โค้ดระบุนักเรียนที่ได้เกรดสูงสุดสำเร็จ หา index ของ minimum elements: แทน max() ด้วย min()
หา Multiple Indexes เท่ากับ Max Value
ถ้ามี 2 นักเรียนได้เกรดสูงสุด โปรแกรมข้างบนคืนแค่ index position ของนักเรียนคนแรกที่ได้เกรดนั้น
หา occurrences ทั้งหมดของนักเรียนที่ได้เกรดเฉพาะ ใช้ list comprehension เริ่ม initialize values และดึง index value ของ largest item เหมือนเดิม:
students = ["Andy", "April", "Julia", "Gary", "Paul"] grades = [75, 82, 64, 68, 82] largest = max(grades)
เพิ่ม 1 record ดูว่าจะเกิดอะไรถ้า 2 คนได้เกรดเท่ากัน
เขียน list comprehension หา index positions ของนักเรียนทุกคนที่ได้เกรดเฉพาะ:
all_grades = [g for g, x in enumerate(grades) if x == largest]
โค้ดวนทุกเกรดใน "grades" list แต่ละเกรดเปรียบเทียบกับ largest value ใน "grades" ถ้าค่าเท่ากับ highest grade เพิ่มเข้า list
enumerate() function แบ่งลิสต์เป็น 2: index numbers และ values "g" แทน index ของ item "x" แทน value ของ item
ใช้ for loop พิมพ์ข้อความสำหรับนักเรียนแต่ละคนที่เกรดเท่ากับ highest grade:
for g in all_grades:
print("{} earned the highest grade in the class. Their grade was {}.".format(students[g], grades[g]))
ถ้ามีนักเรียนหลายคนได้ highest grade for loop จะรันหลายครั้ง ทีละรอบพิมพ์ชื่อนักเรียนพร้อมข้อความว่าได้เกรดสูงสุดในชั้น
รันโปรแกรม:
April earned the highest grade in the class. Their grade was 82. Paul earned the highest grade in the class. Their grade was 82.
โปรแกรมแสดงชื่อนักเรียนทุกคนที่ได้เกรดสูงสุดในชั้นสำเร็จ
สรุป
ดึง index value ของ item ใน list ได้ด้วย index() รวมกับ min() หรือ max() method หา index value ของ smallest หรือ largest item ใน list
ตอนนี้คุณมีความรู้ดึง index value ของ max value ใน list อย่าง Python expert แล้ว!