>التوليد والفهم في بايثون (Generators and Comprehensions)

التوليد والفهم في بايثون

التوليد والفهم في بايثون (Generators and Comprehensions)

التوليد والفهم في بايثون هما من الأدوات المتقدمة التي تساعد على تنظيم وإنشاء البيانات بكفاءة عالية. سيساعدك هذا الدرس على فهم كيفية استخدام التوليد والفهم لتقليل استهلاك الذاكرة وتحسين الأداء، خاصة عند التعامل مع مجموعات بيانات كبيرة.

1. مقدمة إلى التوليد (Generators)

التوليد هو طريقة لإنشاء كائنات قابلة للتكرار مثل القوائم، ولكن بشكل ديناميكي وبذاكرة أقل. يتم استخدام الكلمة المفتاحية yield في بايثون لإنشاء مولدات.

مثال على مولد:
def my_generator():
    yield 1
    yield 2
    yield 3

# استخدام المولد
gen = my_generator()
print(next(gen))  # الناتج: 1
print(next(gen))  # الناتج: 2
print(next(gen))  # الناتج: 3

2. فهم التوليد (Generator Expressions)

التعبير المولد هو صيغة مختصرة لكتابة المولدات داخل أقواس دائرية ().

مثال:
gen_exp = (x * x for x in range(5))

for num in gen_exp:
    print(num)  # الناتج: 0، 1، 4، 9، 16

3. قوائم الفهم (List Comprehensions)

تُستخدم قوائم الفهم لإنشاء قوائم جديدة بناءً على قائمة موجودة بطريقة مختصرة.

مثال:
squares = [x * x for x in range(5)]
print(squares)  # الناتج: [0, 1, 4, 9, 16]

4. فهم القواميس والمجموعات (Dictionary and Set Comprehensions)

يمكن استخدام نفس مبدأ قوائم الفهم لإنشاء قواميس ومجموعات.

مثال على قاموس الفهم:
squares_dict = {x: x * x for x in range(5)}
print(squares_dict)  # الناتج: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
مثال على مجموعة الفهم:
squares_set = {x * x for x in range(5)}
print(squares_set)  # الناتج: {0, 1, 4, 9, 16}

التدريبات العملية

  • التدريب 1: قم بإنشاء مولد يقوم بإرجاع الأعداد الزوجية فقط حتى عدد معين.
  • التدريب 2: استخدم فهم القوائم لإنشاء قائمة تحتوي على الأعداد الفردية فقط من قائمة أعداد من 1 إلى 10.
  • التدريب 3: جرب كتابة قاموس باستخدام فهم القواميس بحيث يحتوي على الأعداد ومكعباتها كقيم.

تعليقات