فهرس قائمة بايثون () مع مثال

القائمة عبارة عن حاوية تقوم بتخزين عناصر من أنواع بيانات مختلفة (ints، floats، Boolean، strings، etc.) في تسلسل مرتب. إنها بنية بيانات مهمة مدمجة في بايثون. تتم كتابة البيانات بين قوسين مربعين ([])، ويتم فصل القيم بفاصلة (،).

تتم فهرسة العناصر الموجودة داخل القائمة بحيث يبدأ العنصر الأول من الفهرس 0. ويمكنك إجراء تغييرات في القائمة التي تم إنشاؤها عن طريق إضافة عناصر جديدة أو عن طريق تحديث العناصر الموجودة أو حذفها. يمكن أن تحتوي أيضًا على عناصر مكررة وقائمة متداخلة.

هناك العديد من الطرق المتاحة في القائمة، وأهمها هو الفهرس ().

فهرس قائمة بايثون ()

تساعدك طريقة list Index() في العثور على أول أقل فهرس للعنصر المحدد. إذا كانت هناك عناصر مكررة داخل القائمة، فسيتم إرجاع الفهرس الأول للعنصر. هذه هي الطريقة الأسهل والمباشرة للحصول على الفهرس.

إلى جانب طريقة فهرس القائمة () المضمنة، يمكنك أيضًا استخدام طرق أخرى للحصول على الفهرس مثل التكرار خلال القائمة، واستخدام فهم القائمة، والتعداد ()، وطرق التصفية.

تقوم طريقة list Index() بإرجاع أول أدنى فهرس للعنصر المحدد.

بناء الجملة

list.index(element, start, end)

المعلمات

المعلمات الوصف
العنصر العنصر الذي تريد الحصول على الفهرس.
بداية هذه المعلمة اختيارية. يمكنك تحديد البداية: الفهرس للبحث عن العنصر. إذا لم يتم إعطاؤه، فإن القيمة الافتراضية هي 0.
النهاية هذه المعلمة اختيارية. يمكنك تحديد فهرس النهاية للعنصر المراد البحث فيه. إذا لم يعطى، يعتبر حتى نهاية القائمة.

قيمة الإرجاع

تقوم طريقة فهرس القائمة () بإرجاع فهرس العنصر المحدد. إذا لم يكن العنصر موجودًا في القائمة، فستؤدي طريقة الفهرس () إلى ظهور خطأ، على سبيل المثال، 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'))

الإخراج:

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))

الإخراج:

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'))

الإخراج:

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'] . اسم "Guru" موجود 3 مرات في الفهرس، وأريد جميع الفهارس باسم "Guru".

باستخدام 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)

الإخراج:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

استخدام while-loop وlist.index()

سيؤدي استخدام حلقة while إلى تكرار القائمة المعطاة للحصول على جميع فهارس العنصر المحدد.

في القائمة: 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)

الإخراج:

OriginalList is  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
The index for element Guru is  [0, 3, 6]

استخدام فهم القائمة للحصول على فهرس العنصر في القائمة

للحصول على جميع الفهارس، هناك طريقة سريعة ومباشرة تتمثل في الاستفادة من فهم القائمة في القائمة.

إن عمليات فهم القائمة هي وظائف بايثون تُستخدم لإنشاء تسلسلات جديدة (مثل القوائم والقواميس وما إلى ذلك)، أي استخدام التسلسلات التي تم إنشاؤها بالفعل.

فهي تساعد على تقليل الحلقات الأطول وتجعل قراءة التعليمات البرمجية الخاصة بك وصيانتها أسهل.

فولوwing يوضح المثال كيفية القيام بذلك:

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)

الإخراج:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

استخدام Enumerate للحصول على فهرس عنصر في القائمة

وظيفة Enumerate() هي وظيفة مضمنة متاحة مع بايثون. يمكنك الاستفادة من التعداد للحصول على كافة فهارس العنصر في القائمة. فهو يأخذ المدخلات ككائن قابل للتكرار (أي كائن يمكن تكراره)، ويكون الإخراج كائنًا به عداد لكل عنصر.

فولوwing يوضح المثال كيفية الاستفادة من التعداد في القائمة للحصول على جميع الفهارس لعنصر معين.

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'])

الإخراج:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

استخدام عامل التصفية للحصول على فهرس عنصر في القائمة

يقوم أسلوب التصفية () بتصفية القائمة المحددة بناءً على الوظيفة المحددة. سيتم تمرير كل عنصر من عناصر القائمة إلى الوظيفة، وسيتم تصفية العناصر المطلوبة بناءً على الشرط الوارد في الوظيفة.

دعونا نستخدم طريقة التصفية () للحصول على فهارس العنصر المحدد في القائمة.

فولوwing يوضح المثال كيفية الاستفادة من عامل التصفية في القائمة.

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)

الإخراج:

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)

الإخراج:

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 يجب تثبيته أولاً للاستفادة منه.

فولوwing هي خطوات التثبيت والاستفادة من more_itertools

الخطوة 1) قم بتثبيت more_itertools باستخدام النقطة (مدير حزم بايثون). الأمر هو

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')))

الإخراج:

Originallist :  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru : [0, 3, 6]

نبذة عامة

  • تساعدك طريقة list Index() في العثور على فهرس العنصر المحدد. هذه هي الطريقة الأسهل والمباشرة للحصول على الفهرس.
  • تقوم طريقة فهرس القائمة () بإرجاع فهرس العنصر المحدد.
  • إذا لم يكن العنصر موجودًا في القائمة، فسيؤدي أسلوب الفهرس () إلى ظهور خطأ، على سبيل المثال، ValueError: 'Element' غير موجود في القائمة.
  • إلى جانب طريقة القائمة المضمنة، يمكنك أيضًا الاستفادة من طرق أخرى للحصول على الفهرس مثل التكرار خلال القائمة، واستخدام فهم القائمة، واستخدام enumerate()، واستخدام مرشح، وما إلى ذلك.
  • استخدام for-loop و while-loop للحصول على فهارس متعددة لعنصر معين.
  • للحصول على جميع الفهارس، هناك طريقة سريعة ومباشرة تتمثل في الاستفادة من فهم القائمة في القائمة.
  • إن فهم القائمة عبارة عن وظائف بايثون تُستخدم لإنشاء تسلسلات جديدة.
  • فهي تساعد على تقليل الحلقات الأطول وتجعل قراءة التعليمات البرمجية الخاصة بك وصيانتها أسهل.
  • يمكنك الاستفادة من التعداد للحصول على كافة فهارس العنصر في القائمة.
  • وظيفة Enumerate() هي وظيفة مضمنة متاحة مع بايثون. فهو يأخذ المدخلات ككائن قابل للتكرار (أي كائن يمكن تكراره)، ويكون الإخراج كائنًا به عداد لكل عنصر.
  • يقوم أسلوب التصفية () بتصفية القائمة المحددة بناءً على الوظيفة المحددة.
  • تُستخدم مكتبة Numpy خصيصًا للمصفوفات. يمكنك الاستفادة من NumPy للحصول على فهرس العنصر الوارد في القائمة.
  • تعتبر more_itertools.locate() مكتبة أخرى من لغات python تساعد في العثور على فهارس القائمة المعطاة.