ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
يعد العمل مع القوائم والكائنات الأخرى القابلة للتكرار مهمة شائعة في برمجة Python . في بعض الأحيان ، قد تحتاج إلى المرور عبر هذه العناصر التكرارية مع تتبع الفهرس أو عدد العنصر الحالي أيضًا. هذا هو المكان الذي تأتي فيه وظيفة التعداد () المضمنة في Python إلى الإنقاذ.
توفر لك الوظيفة enumerate () في Python طريقة مناسبة للوصول إلى كل من فهرس العنصر والعنصر نفسه عندما تقوم بالتكرار فوق قائمة أو أي كائن قابل للتكرار.
هذه الوظيفة تجعل التعليمات البرمجية الخاصة بك أكثر بيثونية وقابلة للقراءة وفعالة. يسمح لك بالمرور عبر العناصر واسترداد كل من فهرسها وقيمتها. بدلاً من تهيئة عداد يدويًا وزيادته داخل الحلقة ، يمكنك الاعتماد على تعداد () للقيام بالمهمة نيابة عنك.
في هذه المقالة ، ستتعرف على وظيفة التعداد المضمنة في Python وأهميتها في كود Python وحالات استخدامها.
دعنا ندخله!
جدول المحتويات
ما هي دالة تعداد بايثون؟
تخيل أنك تعمل باستخدام بنية بيانات قائمة وتريد القيام بشيء ما مع كل عنصر ، ولكنك تحتاج أيضًا إلى معرفة موضع العنصر في القائمة.
بدون تعداد Python () ، قد تقرر استخدام متغير عداد تقوم بزيادته في كل تكرار حلقي. لكن هذا النهج قد يكون عرضة للأخطاء وهو ليس "Pythonic".
التعداد هي وظيفة مضمنة في Python تتيح لك التكرار على الكائنات القابلة للتكرار مع تتبع فهرس العنصر الحالي.
الآن بعد أن فهمت ما هي وظيفة التعداد () في بايثون ، دعنا ننتقل إلى بناء جملة دالة التعداد () في بايثون في القسم التالي!
ما هي صيغة دالة تعداد بايثون؟
يحدد بناء جملة الدالة كيف يجب عليك استخدام هذه الوظيفة في التعليمات البرمجية الخاصة بك ، بما في ذلك الوسائط التي تتطلبها وما تعيده.
تأخذ الدالة enumerate () الصيغة التالية:
enumerate(, start=0)
: هذه معلمة مطلوبة ويمكن أن تكون أي لغة Python قابلة للتكرار ، مثل قائمة أو tuple.
start : هذه المعلمة الثانية هي معلمة اختيارية تحدد قيمة البداية للعداد. بشكل افتراضي ، يتم تعيينه على 0.
إن قيمة إرجاع الدالة enumerate () هي كائن تعداد ، وهو عبارة عن مكرر به أزواج من (index ، element) لكل عنصر في العنصر القابل للتكرار المحدد.
يمكنك استخدام هذا المكرر في حلقة for للوصول إلى كل من الفهرس والعنصر في وقت واحد.
يوضح المثال التالي كيف يمكنك استخدام دالة enumerate () مع قائمة:
fruits = ['apple', 'banana', 'cherry']
for index, item in enumerate(fruits):
print(index, item)
في هذا المثال ، قم بتعداد الحلقات () عبر الكائنات التي تعداد ، أي قائمة الفواكه ، وقم بتعيين فهرس لكل عنصر ، بدءًا من 0.
تقوم حلقة for بفك حزم الفهرس والعنصر من الكائن الذي تم تعداده. يمكّنك هذا من إجراء عمليات بناءً على الفهرس وقيمة العنصر.
نحن نستخدم وظيفة الطباعة لطباعة الفهرس والعنصر على الشاشة. يتم عرض إخراج الكود في الصورة أدناه:
في الإخراج ، يمكنك أن ترى أن مؤشر البداية هو 0. هذه هي القيمة الافتراضية للفهرس المعين تلقائيًا بواسطة مترجم Python.
ومع ذلك ، يمكنك أيضًا تحديد قيمة بداية مختلفة للعداد من خلال توفير معلمة البدء الاختيارية كما هو موضح في الكود أدناه:
for index, item in enumerate(fruits, start=1):
print(index, item)
سيكون الإخراج مشابهًا لما سبق. سيكون الاختلاف الوحيد هو أن المؤشر يبدأ الآن عند 1.
إذن الآن لديك مؤشر على بناء جملة الدالة enumerate () في Python. ولكن ، كما هو الحال مع أي أداة ، من المهم معرفة وقت ومكان استخدامها.
لهذا السبب سنقوم باستكشاف بعض حالات الاستخدام الشائعة لوظيفة التعداد () في القسم التالي!
5 حالات استخدام دالة تعداد بايثون
تُستخدم وظيفة التعداد في Python على نطاق واسع في السيناريوهات التي يكون فيها كل من الفهرس وقيمة الكائن القابل للتكرار ذا أهمية للمبرمج.
لقد قمنا بإدراج بعض حالات الاستخدام الشائعة لتعداد الوظائف في Python أدناه.
1. كيفية استخدام التعداد مع قوائم بايثون
في Python ، القائمة عبارة عن بنية بيانات مضمنة تسمح لك بتخزين عناصر متعددة في متغير واحد. فكر في القائمة على أنها حاوية حيث يمكنك وضع عناصر مختلفة ، وتحافظ على ترتيبها.
يمكن استخدام الدالة enumerate () في القوائم بعدة طرق ، مثل:
أ. الوصول إلى عناصر القائمة ومؤشراتها باستخدام تعداد بايثون
إحدى حالات الاستخدام الأكثر شيوعًا لـ enumerate () هي عندما تحتاج إلى الوصول إلى كل من عناصر القائمة ومؤشراتها. يتيح لك التعداد القيام بذلك بطريقة نظيفة وفعالة.
فيما يلي مثال على الوصول إلى عناصر قائمة ومؤشراتها:
fruits = ['apple', 'banana', 'mango', 'grape', 'orange']
for index, fruit in enumerate(fruits):
print(f"At index {index}, the fruit is {fruit}.")
يتم عرض إخراج هذا الرمز في الصورة أدناه:
ب. تعديل عناصر القائمة باستخدام تعداد بايثون
عندما تحتاج إلى تعديل عناصر قائمة بناءً على فهرسها ، فإن التعداد () يعد أداة ممتازة. يمكنك الوصول إلى الفهرس داخل الحلقة واستخدامه لتعديل القائمة.
فيما يلي مثال على تعديل عناصر القائمة بوظيفة التعداد:
numbers = [1, 2, 3, 4, 5]
for i, num in enumerate(numbers):
numbers[i] = num * 2
ينشئ كود Python هذا قائمة بالأرقام من 1 إلى 5. ثم يستخدم حلقة for ووظيفة enumerate () للتكرار على القائمة.
لكل تكرار ، يضرب الرقم الحالي (num) في 2 ويعيد تعيينه إلى نفس الموضع في القائمة (الأرقام [i]).
والنتيجة أن كل رقم في القائمة الأصلية يتضاعف كما هو موضح في الصورة أدناه:
ج. مقارنة العناصر في قائمتين مع تعداد بايثون
إذا كنت تقارن عناصر في قائمتين مختلفتين ، يمكن أن يوفر التعداد () الفهرس الذي تحتاجه للوصول إلى العناصر في كلتا القائمتين في نفس الوقت.
فيما يلي مثال على استخدام دالة التعداد لمقارنة العناصر في قائمتين:
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 0, 5]
for i, value in enumerate(list1):
if value != list2[i]:
print(f"Difference at index {i}: {value} (list1) vs {list2[i]} (list2)")
في هذا الرمز ، نحدد أولاً قائمتين ، list1 و list2. بعد ذلك ، نقوم بالتكرار خلال list1 باستخدام حلقة for مع التعداد () ، والذي يوفر الفهرس (i) وقيمة كل عنصر.
إذا كان العنصر الحالي في القائمة 1 لا يتطابق مع العنصر المقابل في القائمة 2 ، فإنه يطبع فهرس الاختلاف والقيم المختلفة من كلتا القائمتين.
تظهر نتيجة هذا الرمز أدناه:
2. كيفية استخدام تعداد مع مجموعات بايثون
المجموعة في بايثون هي مجموعة مرتبة من العناصر ، تشبه القائمة. الاختلاف الوحيد هو أن المجموعة غير قابلة للتغيير ، مما يعني أنه لا يمكنك تغيير محتواها بعد الإنشاء.
فيما يلي بعض الحالات حيث يمكنك استخدام التعداد باستخدام مجموعات Python.
أ. استخدام Python Enumerate () لإيجاد عنصر في Tuple
عند التعامل مع tuple في Python ، قد تحتاج غالبًا إلى معرفة ما إذا كان العنصر موجودًا في المجموعة.
يوضح رمز المثال التالي استخدام التعداد للعثور على عناصر في tuple:
fruits = ('apple', 'banana', 'mango', 'grape', 'orange')
for i, fruit in enumerate(fruits):
if fruit == 'mango':
print(f"'mango' found at position {i}")
هذا الرمز سيطبع "mango" الموجود في الموضع 2 "لأن" mango "موجود في الفهرس 2 في المجموعة.
ب. استخدام Python Enumerate () لإنشاء قاموس من Tuple
إذا كان لديك tuple وتحتاج إلى تحويله إلى قاموس ، فيمكن أن تكون وظيفة التعداد () في Python هي أداة الانتقال.
يوضح رمز المثال كيف يمكنك إنشاء قاموس من مجموعة باستخدام التعداد:
fruits = ('apple', 'banana', 'mango', 'grape', 'orange')
fruit_dict = {i: fruit for i, fruit in enumerate(fruits)}
print(fruit_dict)
سيقوم هذا الرمز بطباعة قاموس حيث تكون المفاتيح هي المؤشرات والقيم هي عناصر من المجموعة.
3. كيفية استخدام التعداد مع قواميس بايثون
في Python ، القاموس عبارة عن مجموعة قابلة للتغيير وغير مرتبة من أزواج المفتاح والقيمة ، حيث يجب أن يكون كل مفتاح فريدًا. فكر في الأمر على أنه قاموس حقيقي: تبحث عن كلمة (المفتاح) وتحصل على تعريفها (القيمة).
فيما يلي بعض الحالات التي يمكنك فيها استخدام قواميس التعداد باستخدام قواميس بايثون:
أ. التكرار من خلال مفاتيح وقيم القاموس
يمكنك استخدام الدالة enumerate () للتنقل بين مفاتيح وقيم القاموس.
تضيف الدالة enumerate () عدادًا لكائن قابل للتكرار (مثل القواميس) ، مما يتيح لك الوصول إلى قيمة الفهرس الحالية.
فيما يلي مثال على وظيفة التعداد باستخدام قاموس Python :
example_dict = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
for i, k in enumerate(example_dict):
print(i, k)
في كود Python هذا ، نقوم أولاً بإنشاء قاموس يسمى example_dict. بعد ذلك ، نستخدم الدالة enumerate () للتكرار على القاموس.
لكل تكرار ، نقوم بطباعة عدد الحلقات (الذي يقدمه i ويبدأ من 0) والمفتاح الحالي (وهو k) من القاموس.
ب. الجمع بين تعداد بايثون ووظيفة العناصر
يمكنك أيضًا الوصول إلى مفاتيح وقيم القاموس من خلال وظيفة العناصر () جنبًا إلى جنب مع التعداد () . ترجع الدالة items () مجموعة متكررة من أزواج المفتاح والقيمة على هيئة مجموعات.
يوضح المثال أدناه كيف يمكنك استخدام وظيفة العناصر () مع التعداد () :
example_dict = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
for i, (k, v) in enumerate(example_dict.items()):
print(i, k, v)
في هذا الكود ، نقوم بإنشاء قاموس باسم example_dict ، ثم نستخدم الدالة enumerate () للتكرار على أزواج القيمة والمفتاح في القاموس. خلال كل تكرار ، نطبع فهرس الحلقة "i" والمفتاح الحالي "k" والقيمة المقابلة له "v".
لديك الآن فهم قوي لكيفية استخدام دالة enumerate () في Python في بعض السيناريوهات الشائعة. لكن تعداد () لديها المزيد لتقدمه.
دعنا نتعمق في بعض حالات الاستخدام المتقدمة المحيطة بالتعداد () في القسم التالي!
3 حالات الاستخدام المتقدمة للبايثون تعداد
في هذا القسم ، سوف نتجاوز الأساسيات ونستكشف بعض حالات الاستخدام المتقدمة لوظيفة التعداد في بايثون.
سنغطي حالات الاستخدام التالية:
استخدام التعداد مع فئات بايثون
باستخدام Enumerate مع Enum Classes
استخدام تعداد لعكس الطلب
دعنا ندخله!
1. استخدام التعداد مع فئات بايثون
في رحلة برمجة Python الخاصة بك ، قد تواجه مواقف تريد فيها استخدام التعداد مع الفئات المخصصة.
لتحقيق ذلك ، يجب على فصلك تنفيذ طريقة iter () ، والتي تسمح لها بأن تكون قابلة للتكرار.
ضع في اعتبارك لون فئة يخزن أسماء الألوان والقيم السداسية العشرية المرتبطة بها:
class Color:
def __init__(self, colors: dict):
self.colors = colors
def __iter__(self):
return iter(self.colors.items())
colors = Color({"red": "#FF0000", "green": "#00FF00", "blue": "#0000FF"})
for index, (name, hex_value) in enumerate(colors):
print(f"{index}: {name} => {hex_value}")
في هذا الكود ، نقوم بإنشاء فئة Color تأخذ قاموسًا لأسماء الألوان والقيم السداسية العشرية المقابلة لها.
عندما تستخدم enumerate () في الحلقة ، فإنها توفر الفهرس مع كل زوج من المفاتيح والقيمة. يتيح لك ذلك طباعة الفهرس واسم اللون وقيمته السداسية العشرية في سلسلة منسقة.
2. استخدام Python Enumerate مع فئات Enum
تأتي Python مع فئة Enum مضمنة ، والتي تسمح لك بإنشاء أنواع تعداد بقيم أعداد صحيحة يتم تعيينها تلقائيًا.
على سبيل المثال ، ألق نظرة على الكود التالي:
from enum import Enum, auto
class Direction(Enum):
NORTH = auto()
EAST = auto()
SOUTH = auto()
WEST = auto()
for index, direction in enumerate(Direction):
print(f"{index}: {direction.name} => {direction.value}")
في هذا البرنامج النصي ، نحدد اتجاه التعداد بأربعة أعضاء (الشمال والشرق والجنوب والغرب) باستخدام وحدة التعداد في بايثون. تقوم الوظيفة auto () بتعيين قيمة تلقائية لكل عضو.
عند استخدام enumerate () في الحلقة ، فإنه يوفر فهرسًا مع كل عضو تعداد. يتيح لك هذا طباعة الفهرس واسم العضو والقيمة المعينة تلقائيًا في سلسلة منسقة.
يتم عرض إخراج هذا الرمز في الصورة أدناه:
3. استخدام Python Enumerate لعكس الطلب
في بعض الحالات ، قد ترغب في تعداد العناصر بترتيب عكسي. يمكنك تحقيق ذلك باستخدام الدالة المضمنة المعكوسة () جنبًا إلى جنب مع التعداد () .
يوضح المثال التالي تعداد العناصر بترتيب معكوس:
my_list = ["apple", "banana", "cherry"]
for index, item in enumerate(reversed(my_list)):
print(f"{index}: {item}")
في هذا الكود ، نكرر نسخة معكوسة من my_list باستخدام enumerate (). يوفر لك هذا الفهرس والعنصر من القائمة المعكوسة في كل تكرار. يسمح لك بطباعة الفهرس والعنصر في سلسلة منسقة.
لن تقوم الوظيفة المعكوسة () بتعديل التسلسل الأصلي ؛ يقوم بإنشاء مكرر جديد يعرض العناصر بترتيب عكسي.
لمعرفة المزيد حول الدوال في Python ، تحقق من الفيديو التالي:
افكار اخيرة
بينما تستمر في رحلة بايثون ، فإن إتقان وظيفة التعداد () أمر لا بد منه. إنها أداة تعزز قابلية قراءة الكود وكفاءته.
باستخدام enumerate () ، يمكنك الوصول بسلاسة إلى كل من الفهرس والقيمة في حلقاتك ، مما يقلل الحاجة إلى المتغيرات المضادة أو الفهرسة. إنه يبسط الكود الخاص بك ويجعله أكثر بيثونية.
سواء كنت تقوم بالتكرار خلال القوائم أو المجموعات أو السلاسل أو القواميس ، فإن التعداد () سيثبت أنه أداة قيمة. من خلال الفهم والتدرب على التعداد () ، سوف تتخذ خطوة مهمة في صقل مهاراتك في برمجة بايثون!
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ستتعلم كيفية حفظ وتحميل الكائنات من ملف .rds في R. ستغطي هذه المدونة أيضًا كيفية استيراد الكائنات من R إلى LuckyTemplates.
في هذا البرنامج التعليمي للغة ترميز DAX ، تعرف على كيفية استخدام وظيفة الإنشاء وكيفية تغيير عنوان القياس ديناميكيًا.
سيغطي هذا البرنامج التعليمي كيفية استخدام تقنية Multi Threaded Dynamic Visuals لإنشاء رؤى من تصورات البيانات الديناميكية في تقاريرك.
في هذه المقالة ، سأقوم بتشغيل سياق عامل التصفية. يعد سياق عامل التصفية أحد الموضوعات الرئيسية التي يجب على أي مستخدم LuckyTemplates التعرف عليها في البداية.
أريد أن أوضح كيف يمكن لخدمة تطبيقات LuckyTemplates عبر الإنترنت أن تساعد في إدارة التقارير والرؤى المختلفة التي تم إنشاؤها من مصادر مختلفة.
تعرف على كيفية إجراء تغييرات في هامش الربح باستخدام تقنيات مثل قياس التفرع والجمع بين صيغ DAX في LuckyTemplates.
سيناقش هذا البرنامج التعليمي أفكار تجسيد مخازن البيانات وكيفية تأثيرها على أداء DAX في توفير النتائج.
إذا كنت لا تزال تستخدم Excel حتى الآن ، فهذا هو أفضل وقت لبدء استخدام LuckyTemplates لاحتياجات إعداد تقارير الأعمال الخاصة بك.
ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته