Python قائمة الفهرس () مع المثال
⚡ ملخص ذكي
Python تُعيد الدالة index() في القائمة موضع العنصر الأول المُعطى، بينما تُعيد الدالة looping تقوم البنى، وفهم القوائم، و enumerate()، و filter()، ومكتبة NumPy، و more_itertools.locate() بتوسيع هذه التقنية لجمع كل فهرس مطابق عبر قائمة تحتوي على قيم مكررة.

القائمة عبارة عن حاوية تقوم بتخزين عناصر من أنواع بيانات مختلفة (ints، floats، Boolean، strings، etc.) في تسلسل مرتب. إنها بنية بيانات مهمة مدمجة فيها Pythonيتم كتابة البيانات داخل أقواس مربعة ([])، ويتم فصل القيم بفاصلة (,).
تتم فهرسة العناصر الموجودة داخل القائمة بحيث يبدأ العنصر الأول من الفهرس 0. ويمكنك إجراء تغييرات في القائمة التي تم إنشاؤها عن طريق إضافة عناصر جديدة أو عن طريق تحديث العناصر الموجودة أو حذفها. يمكن أن تحتوي أيضًا على عناصر مكررة وقائمة متداخلة.
هناك العديد من الطرق المتاحة في القائمة، وإحدى الطرق المهمة هي الدالة index().
Python فهرس القائمة ()
تساعدك طريقة list Index() في العثور على أول أقل فهرس للعنصر المحدد. إذا كانت هناك عناصر مكررة داخل القائمة، فسيتم إرجاع الفهرس الأول للعنصر. هذه هي الطريقة الأسهل والمباشرة للحصول على الفهرس.
إلى جانب دالة index() المدمجة في القوائم، يمكنك أيضًا استخدام طرق أخرى للحصول على الفهرس مثل looping من خلال القائمة، باستخدام تراكيب القوائم، و enumerate()، وطرق التصفية.
تقوم طريقة 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
مثال: لاختبار دالة index() باستخدام عنصر غير موجود.
عند محاولة البحث في القائمة عن عنصر غير موجود، ستظهر لك رسالة خطأ كما هو موضح أدناه:
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'، 'سيا'، 'تيا'، 'Guru'، 'داكش'، 'ريا'، 'Guru']. الاسم 'Guruيظهر الاسم ' ثلاث مرات في الفهرس، وأريد جميع الفهارس التي تحمل الاسم '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'، 'سيا'، 'تيا'، '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)
الإخراج:
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)
الإخراج:
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'])
الإخراج:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
استخدام عامل التصفية للحصول على فهرس عنصر في القائمة
يقوم أسلوب التصفية () بتصفية القائمة المحددة بناءً على الوظيفة المحددة. سيتم تمرير كل عنصر من عناصر القائمة إلى الوظيفة، وسيتم تصفية العناصر المطلوبة بناءً على الشرط الوارد في الوظيفة.
دعونا نستخدم طريقة التصفية () للحصول على فهارس العنصر المحدد في القائمة.
يوضح المثال التالي كيفية استخدام عامل التصفية على قائمة.
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، يتعين علينا تثبيته واستيراده.
إليك الخطوات اللازمة لذلك:
الخطوة 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 يجب تثبيته أولاً للاستفادة منه.
فيما يلي خطوات تثبيت واستخدام 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')))
الإخراج:
Originallist : ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
