Python รายการดัชนี () พร้อมตัวอย่าง
รายการคือคอนเทนเนอร์ที่เก็บรายการประเภทข้อมูลต่างๆ (ints, floats, Boolean, strings ฯลฯ) ตามลำดับ เป็นโครงสร้างข้อมูลที่สำคัญที่มีอยู่ในตัว Pythonข้อมูลจะถูกเขียนภายในวงเล็บเหลี่ยม ([]) และคั่นค่าด้วยเครื่องหมายจุลภาค (,)
รายการภายในรายการจะถูกสร้างดัชนีด้วยองค์ประกอบแรกเริ่มต้นที่ดัชนี 0 คุณสามารถทำการเปลี่ยนแปลงในรายการที่สร้างขึ้นได้โดยการเพิ่มรายการใหม่หรือโดยการอัปเดต ลบรายการที่มีอยู่ นอกจากนี้ยังสามารถมีรายการที่ซ้ำกันและรายการที่ซ้อนกันได้
มีหลายวิธีในรายการ และวิธีที่สำคัญคือ index()
Python รายการดัชนี()
list index() วิธีการช่วยให้คุณค้นหาดัชนีต่ำสุดแรกขององค์ประกอบที่กำหนด หากมีองค์ประกอบที่ซ้ำกันภายในรายการ ดัชนีแรกขององค์ประกอบจะถูกส่งกลับ นี่เป็นวิธีที่ง่ายที่สุดและตรงไปตรงมาในการรับดัชนี
นอกจากเมธอด list index() ในตัวแล้ว คุณยังสามารถใช้วิธีอื่นในการรับดัชนี เช่น การวนซ้ำผ่านรายการ โดยใช้ list comprehensions, enumerate() และวิธีกรอง
รายการดัชนี () วิธีการส่งกลับดัชนีต่ำสุดแรกขององค์ประกอบที่กำหนด
วากยสัมพันธ์
list.index(element, start, end)
พารามิเตอร์
พารามิเตอร์ | Descriptไอออน |
---|---|
ธาตุ | องค์ประกอบที่คุณต้องการรับดัชนี |
เริ่มต้น | พารามิเตอร์นี้เป็นทางเลือก คุณสามารถกำหนด start: ดัชนีเพื่อค้นหาองค์ประกอบ หากไม่ได้ระบุ ค่าเริ่มต้นคือ 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
ตัวอย่าง: เพื่อทดสอบวิธีดัชนี () ด้วยองค์ประกอบที่ไม่มีอยู่
เมื่อคุณพยายามค้นหาดัชนีในรายการองค์ประกอบที่ไม่มีอยู่ คุณจะได้รับข้อผิดพลาดดังที่แสดงด้านล่าง:
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', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] ชื่อ 'กูรู' ปรากฏ 3 ครั้งในดัชนี และฉันต้องการดัชนีทั้งหมดที่มีชื่อ 'กูรู'
การใช้ for-loop เราควรจะได้รับดัชนีหลายรายการดังแสดงในตัวอย่างด้านล่าง
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', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] เราต้องการดัชนีทั้งหมดขององค์ประกอบ 'Guru'
ตัวอย่างด้านล่างแสดงวิธีรับดัชนีทั้งหมดโดยใช้ while-loop
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 คุณสามารถใช้การแจกแจงเพื่อรับดัชนีทั้งหมดขององค์ประกอบในรายการได้ โดยรับอินพุตเป็นวัตถุที่สามารถวนซ้ำได้ (เช่น วัตถุที่สามารถวนซ้ำได้) และเอาต์พุตจะเป็นวัตถุที่มีตัวนับสำหรับแต่ละรายการ
ตัวอย่างต่อไปนี้จะแสดงวิธีใช้การระบุรายการเพื่อรับดัชนีทั้งหมดสำหรับองค์ประกอบที่กำหนด
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]
สรุป
- list index() วิธีการช่วยให้คุณค้นหาดัชนีขององค์ประกอบที่กำหนด นี่เป็นวิธีที่ง่ายที่สุดและตรงไปตรงมาในการรับดัชนี
- รายการดัชนี () วิธีการส่งกลับดัชนีขององค์ประกอบที่กำหนด
- หากไม่มีองค์ประกอบอยู่ในรายการ เมธอด index() จะส่งข้อผิดพลาด เช่น ValueError: 'Element' is not in list
- นอกจากเมธอด list ในตัวแล้ว คุณยังสามารถใช้วิธีอื่นๆ เพื่อรับดัชนีได้ เช่น การวนซ้ำรายการ การใช้ list comprehensions การใช้ enumerate() การใช้ตัวกรอง เป็นต้น
- การใช้ for-loop และ while-loop เพื่อรับดัชนีหลายรายการขององค์ประกอบที่กำหนด
- ในการรับดัชนีทั้งหมด วิธีที่รวดเร็วและตรงไปตรงมาคือการใช้รายการความเข้าใจในรายการ
- รายการความเข้าใจคือ Python ฟังก์ชั่นที่ใช้สำหรับสร้างลำดับใหม่
- ช่วยลดการวนซ้ำที่ยาวขึ้นและทำให้โค้ดของคุณอ่านและบำรุงรักษาได้ง่ายขึ้น
- คุณสามารถใช้การแจกแจงเพื่อรับดัชนีทั้งหมดขององค์ประกอบในรายการได้
- ฟังก์ชัน Enumerate() เป็นฟังก์ชันในตัวที่ใช้ได้กับ Python โดยรับอินพุตเป็นวัตถุที่สามารถวนซ้ำได้ (เช่น วัตถุที่สามารถวนซ้ำได้) และเอาต์พุตจะเป็นวัตถุที่มีตัวนับสำหรับแต่ละรายการ
- filter() วิธีการกรองรายการที่กำหนดตามฟังก์ชันที่กำหนด
- ไลบรารี Numpy ใช้สำหรับอาร์เรย์เป็นพิเศษ คุณสามารถใช้ NumPy เพื่อรับดัชนีขององค์ประกอบที่ระบุในรายการ
- more_itertools.locate() เป็นอีกหนึ่งไลบรารี่ของ Python ที่ช่วยในการค้นหาดัชนีของรายการที่กำหนด