Python قائمة الفهرس () مع المثال
القائمة عبارة عن حاوية تقوم بتخزين عناصر من أنواع بيانات مختلفة (ints، floats، Boolean، strings، etc.) في تسلسل مرتب. إنها بنية بيانات مهمة مدمجة فيها Pythonيتم كتابة البيانات داخل أقواس مربعة ([])، ويتم فصل القيم بفاصلة (,).
تتم فهرسة العناصر الموجودة داخل القائمة بحيث يبدأ العنصر الأول من الفهرس 0. ويمكنك إجراء تغييرات في القائمة التي تم إنشاؤها عن طريق إضافة عناصر جديدة أو عن طريق تحديث العناصر الموجودة أو حذفها. يمكن أن تحتوي أيضًا على عناصر مكررة وقائمة متداخلة.
هناك العديد من الطرق المتاحة في القائمة، وأهمها هو الفهرس ().
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
مثال: لاختبار طريقة الفهرس () مع عنصر غير موجود.
عندما تحاول البحث عن فهرس في القائمة عن عنصر غير موجود، سوف تحصل على خطأ كما هو موضح أدناه:
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-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]
استخدام فهم القائمة للحصول على فهرس العنصر في القائمة
للحصول على جميع الفهارس، هناك طريقة سريعة ومباشرة تتمثل في الاستفادة من فهم القائمة في القائمة.
قائمة الفهم هي 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() هي وظيفة مضمنة متاحة مع بايثون. يمكنك الاستفادة من التعداد للحصول على كافة فهارس العنصر في القائمة. فهو يأخذ المدخلات ككائن قابل للتكرار (أي كائن يمكن تكراره)، ويكون الإخراج كائنًا به عداد لكل عنصر.
يوضح المثال التالي كيفية الاستفادة من التعداد في قائمة للحصول على جميع الفهارس للعنصر المحدد.
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 للحصول على فهرس العنصر الذي نحتاجه من القائمة المقدمة.
للاستفادة من 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 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' غير موجود في القائمة.
- إلى جانب طريقة القائمة المدمجة، يمكنك أيضًا استخدام طرق أخرى للحصول على الفهرس مثل looping من خلال القائمة، باستخدام تراكيب القوائم، باستخدام دالة enumerate()، باستخدام عامل تصفية، إلخ.
- استخدام for-loop و while-loop للحصول على فهارس متعددة لعنصر معين.
- للحصول على جميع الفهارس، هناك طريقة سريعة ومباشرة تتمثل في الاستفادة من فهم القائمة في القائمة.
- قائمة الفهم هي Python الوظائف المستخدمة لإنشاء تسلسلات جديدة.
- فهي تساعد على تقليل الحلقات الأطول وتجعل قراءة التعليمات البرمجية الخاصة بك وصيانتها أسهل.
- يمكنك الاستفادة من التعداد للحصول على كافة فهارس العنصر في القائمة.
- وظيفة Enumerate() هي وظيفة مضمنة متاحة مع بايثون. فهو يأخذ المدخلات ككائن قابل للتكرار (أي كائن يمكن تكراره)، ويكون الإخراج كائنًا به عداد لكل عنصر.
- يقوم أسلوب التصفية () بتصفية القائمة المحددة بناءً على الوظيفة المحددة.
- تُستخدم مكتبة Numpy خصيصًا للمصفوفات. يمكنك الاستفادة من NumPy للحصول على فهرس العنصر الوارد في القائمة.
- تعتبر more_itertools.locate() مكتبة أخرى من لغات python تساعد في العثور على فهارس القائمة المعطاة.
