الفرق بين المراجعتين لصفحة: «Python/looping techniques»

من موسوعة حسوب
لا ملخص تعديل
لا ملخص تعديل
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الدوال المساعدة في الحلقات التكرارية}}</noinclude>
<noinclude>{{DISPLAYTITLE:الدوال المساعدة في الحلقات التكرارية}}</noinclude>
تقدّم بايثون مجموعة من الدوال والتوابع التي تسهّل عملية إنشاء الحلقات التكرارية والاستفادة منها بصورة فعّالة في القواميس والقوائم وغيرها:
تقدّم بايثون مجموعة من الدوال والتوابع التي تسهّل عملية إنشاء الحلقات التكرارية والاستفادة منها بصورة فعّالة في [[Python/dict|القواميس]] و<nowiki/>[[Python/list|القوائم]] وغيرها.


== التابع <code>items()</code>‎ ==
== التابع <code>[[Python/dict/items|items()]]</code>‎ ==
عند المرور على عناصر قاموس، يمكن الحصول على المفتاح والقيمة المرتبطة به في نفس الوقت باستخدام التابع <code>items()‎</code>:<syntaxhighlight lang="python3">
عند المرور على عناصر [[Python/dict|قاموس]]، يمكن الحصول على المفتاح والقيمة المرتبطة به في نفس الوقت باستخدام التابع <code>[[Python/dict/items|items()]]‎</code>:<syntaxhighlight lang="python3">
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
>>> for k, v in knights.items():
سطر 12: سطر 12:
</syntaxhighlight>
</syntaxhighlight>


== الدالة <code>enumerate()‎</code> ==
== الدالة <code>[[Python/enumerate|enumerate()]]‎</code> ==
يمكن الحصول على موقع الفهرس والقيمة المرتبطة به في نفس الوقت عند المرور على عناصر تسلسل معيّن باستخدام الدالة <code>enumerate()</code>‎:<syntaxhighlight lang="python3">
يمكن الحصول على موقع الفهرس والقيمة المرتبطة به في نفس الوقت عند المرور على عناصر تسلسل معيّن باستخدام الدالة <code>[[Python/enumerate|enumerate()]]</code>‎:<syntaxhighlight lang="python3">
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...     print(i, v)
...     print(i, v)
سطر 22: سطر 22:
</syntaxhighlight>
</syntaxhighlight>


== الدالة zip()‎ ==
== الدالة <code>[[Python/zip|zip()]]</code>‎ ==
للمرور على عناصر تسلسلين أو أكثر في الوقت نفسه يمكن جمع المدخلات باستخدام الدالة <code>zip()</code>‎:<syntaxhighlight lang="python3">
للمرور على عناصر تسلسلين أو أكثر في الوقت نفسه يمكن جمع المدخلات باستخدام الدالة <code>[[Python/zip|zip()]]</code>‎:<syntaxhighlight lang="python3">
>>> questions = ['name', 'quest', 'favorite color']
>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> answers = ['lancelot', 'the holy grail', 'blue']
سطر 34: سطر 34:
</syntaxhighlight>
</syntaxhighlight>


== الدالة <code>reversed()</code>‎ ==
== الدالة <code>[[Python/reversed|reversed()]]</code>‎ ==
يمكن المرور بصورة عكسية على عناصر تسلسل معيّن باستخدام الدالة <code>reversed()‎</code>، ولكن يجب في البداية تعيين التسلسل بالاتجاه الأمامي ثم استدعاء هذه الدالة لعكس الاتجاه:<syntaxhighlight lang="python3">
يمكن المرور بصورة عكسية على عناصر تسلسل معيّن باستخدام الدالة <code>[[Python/reversed|reversed()‎]]</code>، ولكن يجب في البداية تعيين التسلسل بالاتجاه الأمامي ثم استدعاء هذه الدالة لعكس الاتجاه:<syntaxhighlight lang="python3">
>>> for i in reversed(range(1, 10, 2)):
>>> for i in reversed(range(1, 10, 2)):
...     print(i)
...     print(i)
سطر 47: سطر 47:
</syntaxhighlight>
</syntaxhighlight>


== الدالة <code>sorted()‎</code> ==
== الدالة <code>[[Python/sorted|sorted()‎]]</code> ==
للمرور على عناصر تسلسل معيّن بطريقة مرتّبة، يمكن استخدام الدالة sorted()‎ التي تعيد قائمة جديدة مرتّبة، ولا تقوم بتغيير ترتيب القائمة الأصلية:<syntaxhighlight lang="python3">
للمرور على عناصر تسلسل معيّن بطريقة مرتّبة، يمكن استخدام الدالة <code>[[Python/sorted|sorted()‎]]</code> التي تعيد [[Python/list|قائمة]] جديدة مرتّبة، ولا تقوم بتغيير ترتيب القائمة الأصلية:<syntaxhighlight lang="python3">
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
>>> for f in sorted(set(basket)):

المراجعة الحالية بتاريخ 14:57، 29 مايو 2018

تقدّم بايثون مجموعة من الدوال والتوابع التي تسهّل عملية إنشاء الحلقات التكرارية والاستفادة منها بصورة فعّالة في القواميس والقوائم وغيرها.

التابع items()

عند المرور على عناصر قاموس، يمكن الحصول على المفتاح والقيمة المرتبطة به في نفس الوقت باستخدام التابع items():

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
...     print(k, v)
...
gallahad the pure
robin the brave

الدالة enumerate()

يمكن الحصول على موقع الفهرس والقيمة المرتبطة به في نفس الوقت عند المرور على عناصر تسلسل معيّن باستخدام الدالة enumerate()‎:

>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...     print(i, v)
...
0 tic
1 tac
2 toe

الدالة zip()

للمرور على عناصر تسلسلين أو أكثر في الوقت نفسه يمكن جمع المدخلات باستخدام الدالة zip()‎:

>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
...     print('What is your {0}?  It is {1}.'.format(q, a))
...
What is your name?  It is lancelot.
What is your quest?  It is the holy grail.
What is your favorite color?  It is blue.

الدالة reversed()

يمكن المرور بصورة عكسية على عناصر تسلسل معيّن باستخدام الدالة reversed()‎، ولكن يجب في البداية تعيين التسلسل بالاتجاه الأمامي ثم استدعاء هذه الدالة لعكس الاتجاه:

>>> for i in reversed(range(1, 10, 2)):
...     print(i)
...
9
7
5
3
1

الدالة sorted()‎

للمرور على عناصر تسلسل معيّن بطريقة مرتّبة، يمكن استخدام الدالة sorted()‎ التي تعيد قائمة جديدة مرتّبة، ولا تقوم بتغيير ترتيب القائمة الأصلية:

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
...     print(f)
...
apple
banana
orange
pear

من الممكن إجراء تغييرات على القائمة أثناء المرور على عناصرها، ولكن إنشاء قائمة جديدة تعدّ طريقة أبسط وأكثر أمانًا:

>>> import math
>>> raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]
>>> filtered_data = []
>>> for value in raw_data:
...     if not math.isnan(value):
...         filtered_data.append(value)
...
>>> filtered_data
[56.2, 51.7, 55.3, 52.5, 47.8]

مصادر