Python รายการดัชนี () พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🔘 เมธอด index(): ฟังก์ชัน index() ในตัวจะส่งคืนตำแหน่งต่ำสุดแรกขององค์ประกอบ และรับค่าขีดจำกัดเริ่มต้นและสิ้นสุดเพิ่มเติมได้
  • ☑️ ValueError: เมธอด index() จะเกิดข้อผิดพลาด ValueError เมื่อไม่พบองค์ประกอบ ดังนั้นควรห่อหุ้มการเรียกใช้ด้วย try-except เพื่อความปลอดภัยในการค้นหา
  • ทุกกรณี: ลูป for, ลูป while หรือ list comprehension จะรวบรวมทุกดัชนีเมื่อค่าซ้ำกันภายในลิสต์
  • 🧪 ตัวช่วยในตัว: ฟังก์ชัน enumerate() และ filter() จะจับคู่ดัชนีกับแต่ละรายการ ทำให้สามารถรวบรวมตำแหน่งที่ตรงกันได้อย่างกระชับด้วยบรรทัดเดียว
  • 🛠️ NumPy และ more_itertools: np.where() และ more_itertools.locate() จะคืนค่าดัชนีที่ตรงกันทั้งหมดได้อย่างมีประสิทธิภาพสำหรับชุดข้อมูลขนาดใหญ่
  • 🤖 เวิร์กโฟลว์ AI: กระบวนการเรียนรู้ของเครื่องจะระบุตำแหน่งของป้ายกำกับและตัวอย่างที่ตรงกันโดยใช้ดัชนี ก่อนที่จะนำอาร์เรย์ไปป้อนให้กับโมเดล

Python รายการดัชนี()

รายการคือคอนเทนเนอร์ที่เก็บรายการประเภทข้อมูลต่างๆ (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]

คำถามที่พบบ่อย

เมธอด index() จะเกิดข้อผิดพลาด ValueError เมื่อไม่พบองค์ประกอบ ควรครอบการเรียกใช้ด้วยบล็อก try-except หรือตรวจสอบการเป็นสมาชิกด้วยตัวดำเนินการ in ก่อน เพื่อป้องกันไม่ให้โปรแกรมหยุดทำงานเมื่อค่าหายไป

ค่าที่ส่งคืนโดยฟังก์ชัน index() จะเป็นตำแหน่งที่ไม่ติดลบเสมอ โดยนับจากจุดเริ่มต้น คุณสามารถส่งค่าเริ่มต้นหรือค่าสิ้นสุดที่เป็นลบเพื่อจำกัดขอบเขตการค้นหาได้ แต่ฟังก์ชัน index() จะไม่ส่งคืนค่าดัชนีที่เป็นลบสำหรับองค์ประกอบที่พบ

ใช่แล้ว ฟังก์ชัน index() จะเปรียบเทียบองค์ประกอบอย่างแม่นยำ ดังนั้น 'Guru' และ 'guru' ถือเป็นค่าที่แตกต่างกัน การค้นหาโดยใช้ตัวพิมพ์ใหญ่เล็กที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาด ValueError หากต้องการการจับคู่แบบไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก ให้ใช้ lower() เพื่อปรับสตริงให้เป็นมาตรฐานก่อนทำการค้นหา

ใช้ตัวดำเนินการ in ตัวอย่างเช่น ถ้า 'Guru'ใน my_list ฟังก์ชันนี้จะคืนค่า True หรือ False โดยไม่แสดงข้อผิดพลาด ดังนั้นคุณสามารถเรียกใช้ index() ได้อย่างปลอดภัยก็ต่อเมื่อองค์ประกอบนั้นมีอยู่ในลิสต์จริง ๆ เท่านั้น

สำหรับการค้นหาเพียงครั้งเดียว ฟังก์ชัน index() ที่มีอยู่แล้วนั้นมีประสิทธิภาพเพียงพอ เพราะจะหยุดที่ค่าที่ตรงกันค่าแรก หากต้องการค้นหาค่าจำนวนมากซ้ำๆ ให้สร้างแผนที่พจนานุกรม (dictionary map)ping แต่ละค่าจะถูกกำหนดให้กับดัชนี ซึ่งจะทำให้การค้นหาแต่ละครั้งกลายเป็นการดำเนินการที่รวดเร็วและใช้เวลาคงที่

Python ลิสต์มีเมธอด index() แต่ไม่มีเมธอด find() เมธอด index() จะเกิดข้อผิดพลาด ValueError เมื่อไม่พบองค์ประกอบ ในขณะที่เมธอด find() สำหรับสตริงจะส่งคืนค่า -1 สำหรับลิสต์ ควรดักจับข้อผิดพลาดหรือตรวจสอบสมาชิกภาพด้วยตัวดำเนินการ in แทน

การค้นหาดัชนีขององค์ประกอบช่วยในการแมปป้ายกำกับหมวดหมู่ไปยังตำแหน่งตัวเลข ค้นหาตำแหน่งที่คลาสที่คาดการณ์ปรากฏ หรือจัดเรียงคอลัมน์คุณลักษณะก่อนการฝึกอบรม NumPy ขยายความสามารถนี้ด้วย np.where() สำหรับการค้นหาดัชนีอย่างรวดเร็วในอาร์เรย์และชุดข้อมูลขนาดใหญ่

ใช่แล้ว GitHub Copilot และผู้ช่วย AI ของ Agentic สามารถสร้างการค้นหาโดยใช้ index(), enumerate() และ comprehension จากข้อความแสดงความคิดเห็นธรรมดา แนะนำการจัดการข้อผิดพลาดที่ปลอดภัยสำหรับค่าที่หายไป และปรับปรุงลูปใหม่ แต่คุณควรทดสอบกรณีพิเศษและยืนยันตำแหน่งที่ส่งคืนอีกครั้ง

สรุปโพสต์นี้ด้วย: