- 1 1. المقدمة
- 2 2. أساسيات حلقات for في بايثون
- 3 3. استخدام دالة enumerate
- 4 4. التكرار المتزامن لعدة سلاسل باستخدام دالة zip
- 5 5. تعبيرات القوائم (List Comprehension)
- 6 6. التكرار على القواميس
- 7 7. التكرار على المجموعات
- 8 8. استخدام وحدة itertools
- 9 9. الخلاصة
1. المقدمة
التكرار في بايثون هو عنصر أساسي لتحسين كفاءة البرنامج وقابليته للقراءة. معظم لغات البرمجة لديها هيكل حلقة يُدعى foreach، الذي يسمح بالتكرار بسهولة على كل عنصر من تسلسل، لكن بايثون لا يحتوي على حلقة foreach مباشرة. لذلك، يستخدم بايثون ميزات متنوعة مثل حلقات for، وenumerate، وzip لتحقيق معالجة مشابهة. يشرح هذا المقال كيفية إجراء التكرار في بايثون الذي يتوافق مع foreach، من منظور بسيط وعملي.
لماذا لا تحتوي بايثون على foreach؟
لا تتبنى بايثون foreach بشكل صريح لأن تصميم اللغة يركز على البساطة والمرونة. تم تصميم حلقات for والفهم (comprehensions) لجعل العديد من المهام التكرارية سهلة التنفيذ. توفر بايثون ميزات قوية للتكرار على الفهرس والتسلسلات المتعددة في وقت واحد، لذا حتى بدون foreach، يمكن تحقيق تعبيرات مشابهة.
فوائد التكرار في بايثون
يوفر التكرار في بايثون المزايا التالية.
- الإيجاز : يمكن كتابة الكود بشكل أكثر إيجازًا مقارنة بلغات أخرى، مما يؤدي إلى قابلية قراءة أعلى.
- المرونة : يمكن التكرار المنتظم عبر تسلسلات متعددة وهياكل بيانات مختلفة.
- الفهم (Comprehensions) : يمكن إنشاء قوائم، ومعاجم، ومجموعات أخرى ببساطة، مما يجعل كتابة الكود الفعال سهلة.
في الفصل التالي، سننظر بالتفصيل في الاستخدام الأساسي لحلقة for كجانب أساسي للتكرار في بايثون.
2. أساسيات حلقات for في بايثون
حلقة for، وهي ميزة تكرار أساسية في بايثون، تُستخدم بشكل متكرر لمعالجة كل عنصر من تسلسل. هنا نقدم شرحًا مفصلاً للاستخدام الأساسي لحلقات for للتسلسلات مثل القوائم والتوبلز.
الصيغة الأساسية لحلقات for
تُكتب حلقة for في بايثون باستخدام الصيغة التالية:
for element in sequence:
process
- العنصر : المتغير الذي يتلقى كل عنصر من التسلسل بالترتيب أثناء كل تكرار.
- التسلسل : هيكل بيانات قابل للتكرار مثل قائمة، أو توبل، أو سلسلة نصية.
المثال 1: التكرار على قائمة
أولاً، دعونا ننظر إلى مثال أساسي لحلقة for باستخدام قائمة.
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
في الكود أعلاه، يُعين كل عنصر من قائمة fruits بالترتيب إلى fruit، ويتم تنفيذ print(fruit). ينتج هذا المثال الإخراج التالي.
apple
banana
cherry
المثال 2: التكرار على سلسلة نصية
السلاسل النصية هي أيضًا تسلسلات، لذا يمكنك التكرار على كل حرف.
text = "hello"
for char in text:
print(char)
في هذا الكود، يُعين كل حرف من السلسلة النصية text بالترتيب إلى char ويتم طباعته. النتيجة كالتالي.
h
e
l
l
o
المثال 3: التكرار على نطاق محدد (دالة range)
إذا كنت تريد التكرار على نطاق محدد من الأرقام، استخدم دالة range().
for i in range(5):
print(i)
يعين هذا الكود القيم من 0 إلى 4 بالترتيب إلى i ويطبعها.
0
1
2
3
4
كيفية استخدام دالة range
range(n): إنشاء أرقام من 0 إلىn-1.range(start, stop): إنشاء أرقام منstartإلىstop-1.range(start, stop, step): إنشاء أرقام منstartإلىstop-1بخطوةstep.
أمثلة عملية لحلقات for
حساب مجموع مصفوفة
إليك مثالاً يستخدم حلقة for لحساب مجموع الأرقام في قائمة.
numbers = [1, 2, 3, 4, 5]
total = 0
for number in numbers:
total += number
print("Total:", total)
في هذا الكود، تُضاف الأرقام في القائمة إلى total بالترتيب، ويتم طباعة الإجمالي النهائي.
معالجة شرطية للعناصر
يمكنك أيضًا تعيين شروط داخل حلقة for لمعالجة العناصر بناءً على شروط معينة.
numbers = [1, 2, 3, 4, 5, 6]
for number in numbers:
if number % 2 == 0:
print(number, "is even")
else:
print(number, "is odd")
هذا الكود يحدد ما إذا كان كل رقم زوجيًا أو فرديًا ويطبع النتيجة.
حلقات for المضمنة (الهيكل المضمن)
يمكن تضمين حلقات for داخل بعضها البعض، وهو أمر مفيد عند معالجة قوائم متعددة أو قوائم ثنائية الأبعاد.
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
for item in row:
print(item, end=" ")
print() # newline
هذا الكود يعرض جميع عناصر قائمة ثنائية الأبعاد (قائمة من القوائم).
1 2 3
4 5 6
7 8 9
الملخص
حلقة for في Python هي بنية أساسية للتكرار بكفاءة على التسلسلات مثل القوائم والتويجات والسلاسل. من خلال دمج دالة range() مع الشروط والتضمين، يمكنك تنفيذ مجموعة متنوعة من العمليات ببساطة. فهم هذا الهيكل الأساسي يسمح لك بإجراء تكرار مرن يقارب foreach.

3. استخدام دالة enumerate
عند التكرار على تسلسل في Python، هناك أوقات تريد فيها الحصول على فهرس القائمة والعنصر في وقت واحد. في مثل هذه الحالات، استخدام دالة enumerate يسمح لك بالحصول على الفهرس والعنصر بكفاءة أثناء الحلقة. هنا، سنشرح بالتفصيل الاستخدام الأساسي وأمثلة عملية لدالة enumerate.
الصيغة الأساسية لدالة enumerate
باستخدام دالة enumerate، يتم تعيين فهرس لكل عنصر في التسلسل، مما يولد أزواجًا من الفهرس والعنصر. يتم استخدامها مع الصيغة التالية.
for index, element in enumerate(sequence):
process
- الفهرس : رقم الفهرس المقابل لكل عنصر في التسلسل.
- العنصر : كل عنصر في التسلسل.
- التسلسل : هيكل بيانات قابل للتكرار مثل قائمة أو تويجة أو سلسلة.
المثال 1: الحصول على فهارس القائمة والعناصر في وقت واحد
مثال يعالج قائمة عن طريق الحصول على فهارسها وعناصرها في وقت واحد باستخدام enumerate.
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
هذا الكود يخرج كل عنصر في قائمة fruits مع فهرسه.
0: apple
1: banana
2: cherry
المثال 2: تحديد فهرس البداية
دالة enumerate لديها خيار لتحديد فهرس البداية. افتراضيًا، تبدأ الفهارس من 0، لكن يمكنك تعيين أي قيمة كفهرس بداية.
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits, start=1):
print(f"{index}: {fruit}")
هذا الكود يخرج الفهارس بدءًا من 1.
1: apple
2: banana
3: cherry
أمثلة عملية لدالة enumerate
عرض تقدم قائمة المهام
يمكن أن تكون دالة enumerate مفيدة أيضًا عندما تكون الفهارس مفيدة، مثل في إدارة المهام. المثال أدناه يعرض تقدم كل مهمة بتنسيق قائمة.
tasks = ["Laundry", "Cleaning", "Cooking"]
for index, task in enumerate(tasks, start=1):
print(f"Task{index}: {task} - Completed")
هذا الكود يخرج كل مهمة في قائمة المهام برقم.
Task1: Laundry - Completed
Task2: Cleaning - Completed
Task3: Cooking - Completed
المعالجة بناءً على شروط محددة داخل مصفوفة
عندما تريد معالجة عناصر في مواقع محددة في مصفوفة باستخدام فهارسها، enumerate مفيد أيضًا.
numbers = [10, 20, 30, 40, 50]
for index, number in enumerate(numbers):
if index % 2 == 0:
print(f"Element {number} at index {index} has an even index")
هذا الكود يخرج العناصر الموجودة في الفهارس الزوجية.
Element 10 at index 0 has an even index
Element 30 at index 2 has an even index
Element 50 at index 4 has an even index
الملخص
دالة enumerate مفيدة للغاية للحصول على الفهارس والعناصر في آنٍ واحد. نظرًا لأنه يمكنك تحديد فهرس البداية، فهي مناسبة لترقيم القوائم والمعالجة بناءً على شروط محددة. على وجه الخصوص، تجعل تتبع كل عنصر في القائمة أسهل، مما يحسن من قابلية قراءة الكود وصيانته.
4. التكرار المتزامن لعدة سلاسل باستخدام دالة zip
باستخدام دالة zip في بايثون، يمكنك التكرار على عدة سلاسل في آنٍ واحد. هذه الميزة مفيدة جدًا عندما تريد معالجة القوائم أو tuples سلاسل أخرى بشكل متوازي. هنا نقدم الاستخدام الأساسي وأمثلة عملية لدالة zip.
الصياغة الأساسية لدالة zip
تأخذ دالة zip عدة سلاسل كوسائط، وتجمع عناصرها في tuples، وتنتج كائنًا قابلًا للتكرار. استخدم دالة zip بالصيغ التالية.
for element1, element2, ... in zip(sequence1, sequence2, ...):
process
- element1, element2… : عنصر واحد من كل سلسلة يُجمع في tuple ويُعيّن للمتغيرات بترتيبها.
- sequence1, sequence2… : حدد السلاسل التي تريد معالجتها معًا، مثل القوائم أو الـ tuples.
المثال 1: التكرار على قائمتين في آنٍ واحد
هذا المثال يكرر على قائمتين في آنٍ واحد باستخدام دالة zip ويطبع العناصر المدمجة من كل قائمة.
names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
for name, score in zip(names, scores):
print(f"{name}'s score is {score}")
هذا الكود يكرر على قائمة names وقائمة scores في الوقت نفسه، ويُخرج الأسماء والدرجات.
Alice's score is 85
Bob's score is 92
Charlie's score is 78
المثال 2: التكرار على ثلاث قوائم أو أكثر في آنٍ واحد
دالة zip تدعم أيضًا ثلاث سلاسل أو أكثر، بحيث يمكنك معالجة عدة قوائم أو tuples مرة واحدة.
names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
grades = ["B", "A", "C"]
for name, score, grade in zip(names, scores, grades):
print(f"{name}'s score is {score}, and the grade is {grade}")
هذا الكود يُخرج الأسماء والدرجات والدرجات النهائية معًا.
Alice's score is 85, and the grade is B
Bob's score is 92, and the grade is A
Charlie's score is 78, and the grade is C
سلوك دالة zip عندما تكون السلاسل ذات أطوال مختلفة
عند استخدام دالة zip، إذا كانت السلاسل ذات أطوال مختلفة، يتوقف التكرار عند طول أقصر سلسلة. لنلقِ نظرة على ذلك في المثال أدناه.
names = ["Alice", "Bob"]
scores = [85, 92, 78] # 3 elements
for name, score in zip(names, scores):
print(f"{name}'s score is {score}")
في هذه الحالة، بما أن names تحتوي على عنصرين فقط، يتم تجاهل العنصر الثالث وسيكون الناتج كما يلي.
Alice's score is 85
Bob's score is 92
أمثلة عملية لدالة zip
عرض عناصر القائمة كأزواج
باستخدام دالة zip، يمكنك أيضًا إقران العناصر المتجاورة داخل قائمة واحدة للمعالجة.
data = [10, 20, 30, 40]
for x, y in zip(data, data[1:]):
print(f"Pair: ({x}, {y})")
هذا الكود يقرن العناصر المتجاورة ويطبعها.
Pair: (10, 20)
Pair: (20, 30)
Pair: (30, 40)
الخلاصة
دالة zip أداة قوية للتكرار على عدة سلاسل في الوقت نفسه. تساعد في مهام مثل إقران أو دمج قطع بيانات مختلفة وتتيح لك كتابة كود مختصر. عند العمل مع سلاسل ذات أطوال مختلفة، يتيح استخدام zip_longest حسب الحاجة مرونة في التكرار. 
5. تعبيرات القوائم (List Comprehension)
تتضمن بايثون تقنية قوية تُسمى “تعبير القائمة” لتوليد السلاسل بسهولة. باستخدام تعبيرات القوائم، يصبح إنشاء القوائم باستخدام حلقة for التقليدية أكثر اختصارًا وقراءة. يشرح هذا الفصل الاستخدام الأساسي لتعبيرات القوائم، مع أمثلة حقيقية للكود، لتوضيح فائدتها.
الصياغة الأساسية لتعبيرات القوائم
تُكتب تعبيرات القوائم باستخدام الصياغة التالية.
[expression for element in sequence]
- Expression : العملية التي تُطبق على كل عنصر.
- Element : المتغيّر الذي يستقبل كل عنصر من التسلسل بترتيبه.
- Sequence : بنية بيانات قابلة للتكرار مثل القائمة أو الـ tuple أو السلسلة.
المثال 1: تعبير قائمة أساسي
على سبيل المثال، لإنشاء قائمة جديدة عن طريق مضاعفة كل عنصر في قائمة، يُكتب حلقة for التقليدية كما يلي.
numbers = [1, 2, 3, 4, 5]
doubled = []
for number in numbers:
doubled.append(number * 2)
print(doubled)
باستخدام تعبير قائمة، يمكن كتابة الشيفرة أعلاه باختصار كما يلي.
numbers = [1, 2, 3, 4, 5]
doubled = [number * 2 for number in numbers]
print(doubled)
الناتج كما يلي.
[2, 4, 6, 8, 10]
تعبيرات القوائم الشرطية
في تعبيرات القوائم، يمكنك إضافة تعبير شرطي لمعالجة عناصر معينة فقط. يُكتب الشرط كـ for يليه if.
المثال 2: تعبير قائمة شرطي
على سبيل المثال، لمضاعفة الأعداد الزوجية فقط في قائمة، يمكنك كتابة:
numbers = [1, 2, 3, 4, 5]
doubled_even = [number * 2 for number in numbers if number % 2 == 0]
print(doubled_even)
هذا الشيفرة تستخرج الأعداد الزوجية فقط وتُنشئ قائمة جديدة بمضاعفتها.
[4, 8]
المثال 3: تعبير قائمة شرطي باستخدام else
إذا أردت تطبيق معالجة مختلفة لكل عنصر باستخدام تفرّع شرطي، يمكنك إضافة else قبل if.
numbers = [1, 2, 3, 4, 5]
result = [number * 2 if number % 2 == 0 else number for number in numbers]
print(result)
هذه الشيفرة تضاعف العدد عندما يكون زوجيًا، وإلا تضيف العدد الأصلي إلى القائمة.
[1, 4, 3, 8, 5]
الخلاصة
من خلال الاستفادة من تعبيرات القوائم، يمكنك إنشاء قوائم أكثر اختصارًا وكفاءة مقارنةً بحلقات for. الجمع بين المعالجة الشرطية البسيطة والعمليات المحددة يتيح لك كتابة شيفرة أكثر “بايثونية”. ومع ذلك، قد تقلل تعبيرات القوائم المعقدة من قابلية القراءة، لذا من المهم استخدامها في الحالات المناسبة.
6. التكرار على القواميس
القاموس (dict) هو أحد هياكل البيانات الأساسية في بايثون، يُستخدم لتخزين أزواج المفتاح‑القيمة. مثل القوائم والـ tuples، يمكن التكرار على القواميس، لكنك غالبًا ما تستخرج المفاتيح أو القيم أو كليهما. يشرح هذا الفصل كيفية التكرار على القواميس والوظائف المفيدة بالتفصيل.
التكرار الأساسي على القاموس
في التكرار الأساسي على القاموس، تستخدم حلقة for للحصول على المفاتيح أو القيم أو أزواج المفتاح‑القيمة.
المثال 1: التكرار على المفاتيح فقط
عندما تتكرر على قاموس باستخدام حلقة for، تُعيد المفاتيح فقط بشكل افتراضي.
person = {"name": "Taro", "age": 30, "occupation": "Engineer"}
for key in person:
print(key)
هذه الشيفرة تطبع جميع مفاتيح القاموس بترتيب.
name
age
occupation
المثال 2: التكرار على القيم فقط
للتكرار على قيم القاموس، استخدم الدالة values().
person = {"name": "Taro", "age": 30, "occupation": "Engineer"}
for value in person.values():
print(value)
هذه الشيفرة تطبع جميع قيم القاموس بترتيب.
Taro
30
Engineer
المثال 3: التكرار على أزواج المفتاح‑القيمة
إذا أردت استرجاع كل من المفاتيح والقيم في آنٍ واحد، استخدم الدالة items(). تُعيد كل زوج كـ tuple يمكن تفكيكه إلى متغيّرين.
person = {"name": "Taro", "age": 30, "occupation": "Engineer"}
for key, value in person.items():
print(f"{key}: {value}")
هذه الشيفرة تطبع جميع أزواج المفتاح‑القيمة.
name: Taro
age: 30
occupation: Engineer
التكرار الشرطي على القاموس
إذا أردت استرجاع الأزواج التي تلبي شرطًا معينًا داخل القاموس، يمكنك تحديد الشرط باستخدام جملة if.
المثال 4: إظهار الأزواج ذات القيم المحددة فقط
على سبيل المثال، لإظهار العناصر التي يكون فيها العمر 30 أو أكثر، يمكنك كتابة:
people = {"Taro": 30, "Hanako": 25, "Jiro": 35}
for name, age in people.items():
if age >= 30:
print(f"{name} is at least 30 years old")
هذا الكود يطبع فقط الأزواج التي تحقق الشرط.
Taro is at least 30 years old
Jiro is at least 30 years old
تعبيرات القواميس
مثل تعبيرات القوائم، تعبيرات القواميس ممكنة أيضًا. تسمح لك بإنشاء قاموس جديد بناءً على شرط.
المثال 5: إنشاء قاموس جديد بشرط
على سبيل المثال، لإنشاء قاموس جديد يتضمن فقط الأشخاص الذين يبلغون 30 عامًا أو أكثر، يمكنك كتابة:
people = {"Taro": 30, "Hanako": 25, "Jiro": 35}
adults = {name: age for name, age in people.items() if age >= 30}
print(adults)
مخرجات هذا الكود كما يلي.
{'Taro': 30, 'Jiro': 35}
الملخص
في بايثون، يمكنك التكرار على القواميس عن طريق استرجاع المفح أو القيم أو أزواج المفتاح‑القيمة. بالإضافة إلى ذلك، تتيح تعبيرات القواميس الشرطية ومعالجة القواميس المتداخلة معالجة بيانات مرنة. القواميس بنية بيانات مفيدة جدًا لتنظيم وإدارة البيانات المعقدة، واستخدام تقنيات التكرار المناسبة يعزز من فائدتها. 
7. التكرار على المجموعات
المجموعة (set) هي بنية بيانات تخزن عناصر فريدة، مفيدة للتحقق مما إذا كان عنصر معين موجودًا أو لإزالةكرارات من قائمة. نظرًا لأن مجموعات بايثون غير مرتبة، على عكس القوائم أو tuples لا يمكنك الوصول إلى العناصر عبر الفهرس، لكن يمكنك التكرار على جميع العناصر باستخدام حلقة for. في هذا الفصل، سنغطي أساسيات التكرار على المجموعات، التكرار الشرطي، وطرق التكرار التي تتضمن عمليات خاصة بالمجموعات.
التكرار الأساسي على المجموعة
لمعالجة كل عنصر في مجموعة، استخدم حلقة for. نظرًا لعدم وجود ترتيب في المجموعات، قد يختلف ترتيب المعالجة في كل مرة.
المثال 1: طباعة جميع عناصر المجموعة
أولاً، لنلق نظرة على مثال تكرار أساسي يطبع كل عنصر في مجموعة.
fruits = {"apple", "banana", "cherry"}
for fruit in fruits:
print(fruit)
ترتيب المخرجات غير مضمون، لكن كل عنصر يظهر مرة واحدة فقط.
banana
cherry
apple
التكرار الشرطي على المجموعة
يمكنك أيضًا معالجة عناصر المجموعة التي تلبي شروطًا معينة. استخدم جملة if لتصفية العناصر بناءً على شرط.
المثال 2: طباعة العناصر التي تحقق شرطًا فقط
على سبيل المثال، لطباعة السلاسل في المجموعة التي لا يقل طولها عن خمسة أحرف، يمكنك كتابة:
fruits = {"apple", "banana", "cherry", "fig", "kiwi"}
for fruit in fruits:
if len(fruit) >= 5:
print(fruit)
هذا الكود يطبع أسماء الفواكه التي تتكون من خمسة أحرف أو أكثر.
banana
cherry
apple
تعبيرات المجموعات
مثل تعبيرات القوائم، تعبيرات المجموعات متاحة أيضًا. باستخدام تعبير مجموعة يمكنك إنشاء مجموعة جديدة بشكل مختصر بناءً على شرط.
المثال 3: إنشاء مجموعة جديدة بشرط
على سبيل المثال، لإنشاء مجموعة تحتوي فقط على العناصر التي لا يقل طولها عن خمسة أحرف، كما في المثال السابق، يمكنك كتابة:
fruits = {"apple", "banana", "cherry", "fig", "kiwi"}
long_fruits = {fruit for fruit in fruits if len(fruit) >= 5}
print(long_fruits)
ستكون المخرجات كما يلي (الترتيب غير مضمون).
{'banana', 'cherry', 'apple'}
الملخص
المجموعات هي بنية بيانات لا تسمح بالتكرارات ولا تملك ترتيبًا، مما يمنحها خصائص مختلفة عن القوائم أو tuples. هي مناسبة بشكل خاص للتعامل مع البيانات الفريدة وللعمليات مع مجموعات أخرى لإيجاد التقاطعات أو الفروقات. بالإضافة إلى ذلك، يتيح استخدام تعبيرات المجموعات معالجة بيانات مختصرة وفعّالة.
8. استخدام وحدة itertools
itertools هو مجموعة أدوات مفيدة مدمجة في مكتبة بايثون القياسية للمساعدة في التكرار. يوفر العديد من الدوال للتعامل بكفاءة مع هياكل البيانات القابلة للتكرار، وهو مفيد بشكل خاص عند العمل مع كميات كبيرة من البيانات. في هذا الفصل، نشرح الدوال الرئيسية في وحدة itertools وكيفية استخدامها.
الدوال الأساسية في وحدة itertools
توفر وحدة itertools مجموعة متنوعة من الدوال لتعزيز عملية التكرار. هنا نقدم دوالًا تمثيلية ونشرح كيفية استخدامها بأمثلة ملموسة.
1. دالة count
دالة count هي مكرّر يولد أعدادًا تتزايد إلى ما لا نهاية بدءًا من قيمة بداية محددة. تُستخدم أساسًا لتوليد أرقام متسلسلة عندما لا يكون هناك حد أعلى محدد.
from itertools import count
for i in count(10):
if i > 15:
break
print(i)
هذا الكود يبدأ من 10 ويطبع الأعداد الصحيحة الأصغر من 16.
10
11
12
13
14
15
2. دالة cycle
دالة cycle تنشئ مكرّرًا يكرر تسلسلًا معينًا إلى ما لا نهاية. تكون مفيدة عندما تريد إخراج نمط معين بشكل متكرر.
from itertools import cycle
count = 0
for item in cycle(["A", "B", "C"]):
if count == 6:
break
print(item)
count += 1
هذا الكود يكرر “A”، “B”، “C” ويطبعها إجمالًا 6 مرات.
A
B
C
A
B
C
3. دالة repeat
دالة repeat تنشئ مكرّرًا يكرر عنصرًا محددًا إلى ما لا نهاية. يمكنك أيضًا تحديد عدد التكرارات باستخدام معامل ثانٍ.
from itertools import repeat
for item in repeat("Python", 3):
print(item)
هذا الكود يطبع “Python” ثلاث مرات.
Python
Python
Python
4. دالة accumulate
دالة accumulate تنشئ مكرّرًا يحسب المجموع التراكمي لتسلسل معين. على سبيل المثال، تكون مفيدة لإضافة عناصر القائمة بشكل متسلسل. باستخدام دالة مخصصة، يمكنك أيضًا إجراء حسابات أخرى مثل الضرب أو القيم القصوى.
from itertools import accumulate
numbers = [1, 2, 3, 4, 5]
result = list(accumulate(numbers))
print(result)
هذا الكود يحسب المجموع التراكمي لقائمة ويطبع النتيجة التالية.
[1, 3, 6, 10, 15]
الخلاصة
توفر وحدة itertools مجموعة غنية من الدوال لتن التكرار المعقد بكفاءة. تكون مفيدة بشكل خاص عندما تحتاج إلى تكرار لا نهائي أو إلى توليفات وترتيبات للبيانات، مما يساعد على جعل الشيفرة مختصرة وتسريع المعالجة. من خلال التعامل مع التكرار بمرونة أكبر، يمكنك كتابة شيفرة بايثون تتعامل مع مجموعات بيانات كبيرة وعمليات معقدة.
9. الخلاصة
توفر بايثون طرقًا متعددة للتعامل مع التكرار، لكل منها خصائصه واستخداماته. خلال هذه السلسلة، تعلمنا تقنيات متنوعة لجعل التكرار في بايثون أكثر كفاءة. في هذا الفصل، سنستعرض تلك التقنيات لتتمكن من اختيار الخيار المناسب لأهدافك.
النقاط الرئيسية واستخدامات كل طريقة
فيما يلي ملخص مختصر للنقاط الرئيسية واستخدامات كل طريقة.
1. حلقة for
النقطة: الصيغة الأساسية للتكرار في بايثون. بسيطة ومتعددة الاستخدامات.
الاستخدام: تُستخدم عند معالجة تسلسلات مثل القوائم أو tuples أو السلاسل النصية.
2. دالة enumerate
النقطة: دالة للحصول على كل من الفهرس والعنصر في آنٍ واحد.
الاستخدام: التكرار على البيانات حيث يهم الترتيب أو عندما تحتاج إلى فهرس.
3. دالة zip
النقطة: تسمح بالتكرار المتزامن على عدة تسلسلات.
الاستخدام: مريحة لمعالجة العناصر المقابلة في قوائم أو tuples مختلفة.
4. List Comprehension
النقطة: طريقة بسيطة وفعّالة لإنشاء القوائم. يمكن أيضًا إجراء معالجة شرطية.
الاستخدام: إنشاء وتصفية القوائم بناءً على شروط أو تعبيرات.
5. تكرار القواميس (Dictionary Iteration)
النقطة: يمكن استرجاع المفاتيح أو القيم أو أزواج المفتاح-القيمة.
الاستخدام: تُستخدم عند التعامل مع بيانات القاموس ومعالجتها بناءً على المفاتيح والقيم.
٦. تكرار المجموعة
النقطة: يمكنه معالجة البيانات ذات العناصر الفريدة (غير المكررة).
الاستخدام: معالجة البيانات الفريدة وإجراء عمليات مع مجموعات أخرى.
٧. وحدة itertools
النقطة: يتيح التكرار اللانهائي، وتوليفات متعددة المتسلسلات، وإنشاء التباديل والتوافيق.
الاستخدام: للتكرار المعقد أو عند التعامل بكفاءة مع كميات كبيرة من البيانات.
إرشادات لاختيار الطريقة المثلى
في التكرار، من المهم اختيار الطريقة المثلى بناءً على الهدف وبنية البيانات. أدناه إرشادات لاختيار التقنية المناسبة للتكرار لكل غرض.
- تكرار قائمة أو مجموعة (tuple) بسيطة : حلقة
forالأساسية هي الأكثر مباشرة وبساطة. - عند الحاجة إلى فهرس : باستخدام
enumerate، يمكنك التكرار مع الحصول على الفهرس والعنصر في آنٍ واحد. - عند معالجة متسلسلات متعددة في آنٍ واحد : يتيح لك استخدام
zipمعالجة قوائم أو مجموعات متعددة بكفاءة وبشكل متوازي. - إنشاء قائمة شرطية : يتيح لك استخدام تعبيرات القائمة (list comprehensions) اختيار العناصر بناءً على شرط وتخزين النتائج المحسوبة مباشرةً في قائمة.
- عند الحاجة إلى عمليات خاصة على القواميس أو المجموعات : باستخدام طرق
items()،values()، أو تعبيرات المجموعة المتخصصة للقواميس والمجموعات، يمكنك بسهولة التعامل مع المفاتيح والقيم أو البيانات الفريدة. - عند الحاجة إلى تكرار متقدم أو تحسين : الاستفادة من وحدة
itertoolsيتيح تكرارًا نهائيًا فعالًا، وتوليف مجموعات بيانات متعددة، وإنشاء تباديل وتوافيق خاصة.
الخلاصة
توفر بايثون مجموعة غنية من الميزات لأداء التكرار بكفاءة واختصار. باستخدام مجموعة متنوعة من التقنيات—من الحلقات البسيطة إلى التكرار المتقدم عبر متسلسلات متعددة—يمكنك تحسين قابلية قراءة الكود وكفاءته بشكل كبير. تطبيق هذه الأساليب بشكل صحيح يجعل برمجة بايثون أكثر مرونة وقوة.
في المستقبل، اسع إلى إتقان كل ميزة حسب الحاجة واستمر في كتابة كود فعال.




