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 ที่ช่วยในการค้นหาดัชนีของรายการที่กำหนด