Python รายการดัชนี () พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
Python เมธอด `list index()` จะคืนค่าตำแหน่งแรกขององค์ประกอบที่กำหนด ในขณะที่เมธอด `list index()` จะคืนค่าตำแหน่งแรกขององค์ประกอบที่กำหนดping โครงสร้างต่างๆ เช่น list comprehensions, enumerate(), filter(), ไลบรารี NumPy และ more_itertools.locate() ขยายเทคนิคนี้เพื่อรวบรวมดัชนีที่ตรงกันทั้งหมดในลิสต์ที่มีค่าซ้ำกัน

รายการคือคอนเทนเนอร์ที่เก็บรายการประเภทข้อมูลต่างๆ (ints, floats, Boolean, strings ฯลฯ) ตามลำดับ เป็นโครงสร้างข้อมูลที่สำคัญที่มีอยู่ในตัว Pythonข้อมูลจะถูกเขียนภายในวงเล็บเหลี่ยม ([]) และคั่นค่าด้วยเครื่องหมายจุลภาค (,)
รายการภายในรายการจะถูกสร้างดัชนีด้วยองค์ประกอบแรกเริ่มต้นที่ดัชนี 0 คุณสามารถทำการเปลี่ยนแปลงในรายการที่สร้างขึ้นได้โดยการเพิ่มรายการใหม่หรือโดยการอัปเดต ลบรายการที่มีอยู่ นอกจากนี้ยังสามารถมีรายการที่ซ้ำกันและรายการที่ซ้อนกันได้
มีเมธอดมากมายที่ใช้กับลิสต์ และหนึ่งในเมธอดที่สำคัญคือเมธอด index()
Python รายการดัชนี()
list index() วิธีการช่วยให้คุณค้นหาดัชนีต่ำสุดแรกขององค์ประกอบที่กำหนด หากมีองค์ประกอบที่ซ้ำกันภายในรายการ ดัชนีแรกขององค์ประกอบจะถูกส่งกลับ นี่เป็นวิธีที่ง่ายที่สุดและตรงไปตรงมาในการรับดัชนี
นอกจากเมธอด index() ที่มีอยู่แล้ว คุณยังสามารถใช้วิธีอื่นในการหาดัชนีได้ เช่น looping โดยใช้ลิสต์แบบเข้าใจง่าย (list comprehensions), เมธอด enumerate() และ filter
รายการดัชนี () วิธีการส่งกลับดัชนีต่ำสุดแรกขององค์ประกอบที่กำหนด
วากยสัมพันธ์
list.index(element, start, end)
พารามิเตอร์
| พารามิเตอร์ | Descriptไอออน |
|---|---|
| ธาตุ | องค์ประกอบที่คุณต้องการรับดัชนี |
| เริ่มต้น | พารามิเตอร์นี้เป็นตัวเลือก คุณสามารถกำหนดดัชนีเริ่มต้นเพื่อค้นหาองค์ประกอบได้ หากไม่ได้ระบุ ค่าเริ่มต้นคือ 0 |
| ปลาย | พารามิเตอร์นี้เป็นทางเลือก คุณสามารถระบุดัชนีสิ้นสุดสำหรับองค์ประกอบที่จะค้นหาได้ ถ้าไม่ให้ถือว่าจบรายการ |
ราคาย้อนกลับ
รายการดัชนี () วิธีการส่งกลับดัชนีขององค์ประกอบที่กำหนด หากไม่มีองค์ประกอบอยู่ในรายการ เมธอด index() จะส่งข้อผิดพลาด เช่น ValueError: 'Element' ไม่อยู่ในรายการ
ตัวอย่าง: เพื่อค้นหาดัชนีขององค์ประกอบที่กำหนด
ในรายการ my_list = ['A', 'B', 'C', 'D', 'E', 'F'] เราต้องการทราบดัชนีขององค์ประกอบ C และ F
ตัวอย่างด้านล่างแสดงวิธีการรับดัชนี
my_list = ['A', 'B', 'C', 'D', 'E', 'F'] print("The index of element C is ", my_list.index('C')) print("The index of element F is ", my_list.index('F'))
Output:
The index of element C is 2 The index of element F is 5
ตัวอย่าง: การใช้จุดเริ่มต้นและจุดสิ้นสุดในดัชนี ()
ในตัวอย่างนี้ เราจะลองจำกัดการค้นหาดัชนีในรายการโดยใช้ดัชนีเริ่มต้นและดัชนีสิ้นสุด
my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] print("The index of element C is ", my_list.index('C', 1, 5)) print("The index of element F is ", my_list.index('F', 3, 7)) #using just the startindex print("The index of element D is ", my_list.index('D', 1))
Output:
The index of element C is 2 The index of element F is 5 The index of element D is 3
ตัวอย่าง: เพื่อทดสอบเมธอด index() กับองค์ประกอบที่ไม่มีอยู่จริง
เมื่อคุณพยายามค้นหารายการที่ไม่มีอยู่ คุณจะได้รับข้อผิดพลาดดังที่แสดงด้านล่าง:
my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] print("The index of element C is ", my_list.index('Z'))
Output:
Traceback (most recent call last): File "display.py", line 3, in <module> print("The index of element C is ", my_list.index('Z')) ValueError: 'Z' is not in list
การใช้ for-loop เพื่อรับดัชนีขององค์ประกอบในรายการ
ด้วยเมธอด list.index() เราพบว่ามันให้ดัชนีขององค์ประกอบที่ถูกส่งผ่านเป็นอาร์กิวเมนต์
ลองพิจารณาลิสต์ดังนี้: my_list = ['Guru', 'สิยา', 'ติยา', 'Guru', 'ดัคช์', 'ริยา', 'Guruชื่อ 'Guru' ปรากฏอยู่ในดัชนี 3 ครั้ง และฉันต้องการดัชนีทั้งหมดที่มีชื่อว่า 'Guru'
การใช้ลูป for จะช่วยให้เราสามารถดึงค่าดัชนีหลายค่าได้ ดังตัวอย่างด้านล่าง
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] all_indexes = [] for i in range(0, len(my_list)) : if my_list[i] == 'Guru' : all_indexes.append(i) print("Originallist ", my_list) print("Indexes for element Guru : ", all_indexes)
Output:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
การใช้ while-loop และ list.index()
การใช้ while-loop จะวนซ้ำรายการที่กำหนดเพื่อรับดัชนีทั้งหมดขององค์ประกอบที่กำหนด
ในรายการ: my_list = ['Guru', 'สิยา', 'ติยา', 'Guru', 'ดัคช์', 'ริยา', 'Guru'], เราต้องการดัชนีทั้งหมดขององค์ประกอบ 'Guru'
ด้านล่างนี้คือตัวอย่างที่แสดงวิธีการดึงค่าดัชนีทั้งหมดโดยใช้ลูป while
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] result = [] elementindex = -1 while True: try: elementindex = my_list.index('Guru', elementindex+1) result.append(elementindex) except ValueError: break print("OriginalList is ", my_list) print("The index for element Guru is ", result)
Output:
OriginalList is ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] The index for element Guru is [0, 3, 6]
การใช้ความเข้าใจรายการเพื่อรับดัชนีขององค์ประกอบในรายการ
ในการรับดัชนีทั้งหมด วิธีที่รวดเร็วและตรงไปตรงมาคือการใช้รายการความเข้าใจในรายการ
รายการความเข้าใจคือ Python ฟังก์ชันที่ใช้สำหรับสร้างลำดับใหม่ (เช่น รายการ พจนานุกรม ฯลฯ) เช่น การใช้ลำดับที่สร้างขึ้นแล้ว
ช่วยลดการวนซ้ำที่ยาวขึ้นและทำให้โค้ดของคุณอ่านและบำรุงรักษาได้ง่ายขึ้น
ตัวอย่างต่อไปนี้แสดงวิธีการทำ:
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] print("Originallist ", my_list) all_indexes = [a for a in range(len(my_list)) if my_list[a] == 'Guru'] print("Indexes for element Guru : ", all_indexes)
Output:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
การใช้ Enumerate เพื่อรับดัชนีขององค์ประกอบในรายการ
ฟังก์ชัน `Enumerate()` เป็นฟังก์ชันในตัวที่มีให้ใช้งาน Pythonคุณสามารถใช้เมธอด `enumerate` เพื่อรับดัชนีทั้งหมดขององค์ประกอบในรายการได้ โดยรับอินพุตเป็นอ็อบเจ็กต์ที่สามารถวนซ้ำได้ (เช่น อ็อบเจ็กต์ที่สามารถวนซ้ำได้) และส่งออกเป็นอ็อบเจ็กต์ที่มีตัวนับสำหรับแต่ละรายการ
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ enumerate กับลิสต์เพื่อรับดัชนีทั้งหมดสำหรับองค์ประกอบที่กำหนด
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] print("Originallist ", my_list) print("Indexes for element Guru : ", [i for i, e in enumerate(my_list) if e == 'Guru'])
Output:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
การใช้ตัวกรองเพื่อรับดัชนีขององค์ประกอบในรายการ
filter() วิธีการกรองรายการที่กำหนดตามฟังก์ชันที่กำหนด แต่ละองค์ประกอบของรายการจะถูกส่งผ่านไปยังฟังก์ชัน และองค์ประกอบที่ต้องการจะถูกกรองตามเงื่อนไขที่กำหนดในฟังก์ชัน
ให้เราใช้ filter() วิธีการรับดัชนีสำหรับองค์ประกอบที่กำหนดในรายการ
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ตัวกรองกับรายการ
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] print("Originallist ", my_list) all_indexes = list(filter(lambda i: my_list[i] == 'Guru', range(len(my_list)))) print("Indexes for element Guru : ", all_indexes)
Output:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
การใช้ NumPy เพื่อรับดัชนีขององค์ประกอบในรายการ
ไลบรารี NumPy ใช้สำหรับประมวลผลอาร์เรย์โดยเฉพาะ ดังนั้นในที่นี้เราจะใช้ NumPy เพื่อหาดัชนีขององค์ประกอบที่เราต้องการจากลิสต์ที่กำหนด
เพื่อใช้งาน NumPy เราต้องติดตั้งและนำเข้ามัน
ต่อไปนี้คือขั้นตอนในการดำเนินการดังกล่าว:
ขั้นตอน 1) ติดตั้ง NumPy
pip install numpy
ขั้นตอน 2) นำเข้าโมดูล NumPy
import numpy as np
ขั้นตอน 3) ใช้เมธอด `np.array` เพื่อแปลงลิสต์ให้เป็นอาร์เรย์
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] np_array = np.array(my_list)
ขั้นตอน 4) หาดัชนีขององค์ประกอบที่คุณต้องการโดยใช้ np.where()
item_index = np.where(np_array == 'Guru')[0]
รหัสการทำงานสุดท้ายพร้อมเอาต์พุตมีดังนี้:
import numpy as np my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] np_array = np.array(my_list) item_index = np.where(np_array == 'Guru')[0] print("Originallist ", my_list) print("Indexes for element Guru :", item_index)
Output:
Originallist['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0 3 6]
ใช้ more_itertools.locate() เพื่อหาดัชนีขององค์ประกอบในรายการ
ฟังก์ชัน more_itertools.locate() ช่วยค้นหาดัชนีขององค์ประกอบในรายการ โมดูลนี้จะทำงานร่วมกับ Python เวอร์ชัน 3.5 ขึ้นไป แพ็กเกจ more_itertools จะต้องติดตั้งก่อนจึงจะใช้งานได้
ขั้นตอนต่อไปนี้คือวิธีการติดตั้งและใช้งาน more_itertools:
ขั้นตอน 1) ติดตั้ง more_itertools โดยใช้ pip (Python ตัวจัดการแพ็กเกจ) คำสั่งคือ
pip install more_itertools
ขั้นตอน 2) เมื่อติดตั้งเสร็จแล้วให้นำเข้าไฟล์ ค้นหา โมดูลดังที่แสดงด้านล่าง
from more_itertools import locate
ตอนนี้คุณสามารถใช้โมดูลการค้นหาในรายการตามที่แสดงด้านล่างในตัวอย่าง:
from more_itertools import locate my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] print("Originallist : ", my_list) print("Indexes for element Guru :", list(locate(my_list, lambda x: x == 'Guru')))
Output:
Originallist : ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
