الفرق بين المراجعتين لصفحة: «Python/collections»
لا ملخص تعديل |
|||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:الوحدة <code>collections</code> في بايثون}}</noinclude> | <noinclude>{{DISPLAYTITLE:الوحدة <code>collections</code> في بايثون}}</noinclude> | ||
تتضمّن هذه الوحدة أنواع بيانات متخصّصة بالحاويات container وتقدّم بدائل للحاويات الداخلية [[Python/dict|dict]] و [[Python/list|list]] و [[Python/set|set]] و [[Python/tuple|tuple]]. | تتضمّن هذه الوحدة أنواع بيانات متخصّصة بالحاويات container وتقدّم بدائل للحاويات الداخلية [[Python/dict|<code>dict</code>]] و [[Python/list|<code>list</code>]] و [[Python/set|<code>set</code>]] و [[Python/tuple|<code>tuple</code>]]. | ||
تقدّم هذه الوحدة الكائنات التالية: | تقدّم هذه الوحدة الكائنات التالية: | ||
{| class="wikitable" | {| class="wikitable" | ||
|<code>namedtuple</code> | |<code>namedtuple</code> | ||
|دالة مولِّدة factory function لإنشاء أصناف فرعية من | |دالة مولِّدة factory function لإنشاء أصناف فرعية من صفٍّ يتضمن حقولًا مسمّاة | ||
|- | |- | ||
|<code>deque</code> | |<code>deque</code> | ||
سطر 14: | سطر 14: | ||
|- | |- | ||
|<code>Counter</code> | |<code>Counter</code> | ||
|صنف فرعي من الصنف dict الهدف منه عدّ الكائنات القابلة للتقطيع hashable | |صنف فرعي من الصنف <code>[[Python/dict|dict]]</code> الهدف منه عدّ الكائنات القابلة للتقطيع hashable | ||
|- | |- | ||
|<code>OrderedDict</code> | |<code>OrderedDict</code> | ||
|صنف فرعي من الصنف dict يمكنه تذكّر ترتيب العناصر عند إضافتها | |صنف فرعي من الصنف <code>[[Python/dict|dict]]</code> يمكنه تذكّر ترتيب العناصر عند إضافتها | ||
|- | |- | ||
|<code>defaultdict</code> | |<code>defaultdict</code> | ||
|صنف فرعي من الصنف dict يستدعي دالة مولّدة تقدّم القيم المفقودة | |صنف فرعي من الصنف <code>[[Python/dict|dict]]</code> يستدعي دالة مولّدة تقدّم القيم المفقودة | ||
|- | |- | ||
|<code>UserDict</code> | |<code>UserDict</code> | ||
|تغليف حول كائنات القواميس لتسهيل عملية تفريع أصناف القواميس | |تغليف حول كائنات [[Python/dict|القواميس]] لتسهيل عملية تفريع أصناف القواميس | ||
|- | |- | ||
|<code>UserList</code> | |<code>UserList</code> | ||
|تغليف حول كائنات القوائم لتسهيل عملية تفريع أصناف القوائم | |تغليف حول كائنات [[Python/list|القوائم]] لتسهيل عملية تفريع أصناف القوائم | ||
|- | |- | ||
|<code>UserString</code> | |<code>UserString</code> | ||
|تغليف حول كائنات السلاسل النصية لتسهيل عملية تفريع أصناف السلاسل النصية | |تغليف حول كائنات [[Python/str|السلاسل النصية]] لتسهيل عملية تفريع أصناف السلاسل النصية | ||
|} | |} | ||
'''ملاحظة:''' | '''ملاحظة:''' نُقلت الأصناف المجردة الأساسية للمجموعات Collections Abstract Base Classes في الإصدار 3.3 من بايثون إلى الوحدة <code>[[Python/collections.abc|collections.abc]]</code>. ولغرض التوافق مع الإصدارات السابقة من اللغة، ستبقى هذه الأصناف في وحدة <code>collections</code> حتى الإصدار 3.7، وستحذف منها بعد ذلك بصورة نهائية. | ||
== [[Python/ChainMap|كائنات ChainMap]] == | == [[Python/ChainMap|كائنات <code>ChainMap</code>]] == | ||
يقدّم الصنف <code>Chainmap</code> طريقة سريعة لربط عدد من عمليات الربط mappings ليصبح بالإمكان التعامل معها كوحدة واحدة. وعادة ما تكون هذه الطريقة أسرع من إنشاء قاموس جديد واستدعاء التابع <code>update()</code> مرّات عدة. | يقدّم الصنف <code>Chainmap</code> طريقة سريعة لربط عدد من عمليات الربط mappings ليصبح بالإمكان التعامل معها كوحدة واحدة. وعادة ما تكون هذه الطريقة أسرع من إنشاء قاموس جديد واستدعاء التابع <code>update()</code> مرّات عدة. | ||
يمكن استخدام هذا الصنف لمحاكاة النطاقات المتشعّبة وهو مفيد في عملية القولبة templating. | يمكن استخدام هذا الصنف لمحاكاة النطاقات المتشعّبة وهو مفيد في عملية القولبة templating. | ||
== [[Python/Counter|كائنات Counter]] == | == [[Python/Counter|كائنات <code>Counter</code>]] == | ||
تقدم كائنات <code>Counter</code> (العدادات) أداة سريعة ومريحة لإجراء عمليات العدّ والحصول على المجموع | تقدم كائنات <code>Counter</code> (العدادات) أداة سريعة ومريحة لإجراء عمليات العدّ والحصول على المجموع. | ||
== [[Python/deque|كائنات deque]] == | == [[Python/deque|كائنات <code>deque</code>]] == | ||
تعدّ <code>deques</code> تعميمًا للأكداس والطوابير stacks and queues (يقرأ الاسم هكذا "deck" وهو اختصار للعبارة "double-ended queue"). | تعدّ <code>deques</code> تعميمًا للأكداس والطوابير stacks and queues (يقرأ الاسم هكذا "deck" وهو اختصار للعبارة "double-ended queue"). | ||
تدعم <code>deques</code> عمليات الإضافة والحذف من طرفي كائن <code>deque</code> مع ضمان سلامة الخيوط thread-safe ودون استهلاك كبير للذاكرة وبأداء مقارب لأداء <code>O(1)</code> في كلا الاتجاهين. | تدعم <code>deques</code> عمليات الإضافة والحذف من طرفي كائن <code>deque</code> مع ضمان سلامة الخيوط thread-safe ودون استهلاك كبير للذاكرة وبأداء مقارب لأداء <code>O(1)</code> في كلا الاتجاهين. | ||
== [[Python/defaultdict|كائنات defaultdict]] == | == [[Python/defaultdict|كائنات <code>defaultdict</code>]] == | ||
صنف متفرّع من الصنف الداخلي <code>[[Python/dict|dict]]</code> يعيد تعريف override تابع واحد ويضيف متغير نسخة واحدًا قابلًا للكتابة. | صنف متفرّع من الصنف الداخلي <code>[[Python/dict|dict]]</code> يعيد تعريف override تابع واحد ويضيف متغير نسخة واحدًا قابلًا للكتابة. | ||
== الصفوف المسمّاة == | == [[Python/namedtuple|الصفوف المسمّاة <code>namedtuples</code>]] == | ||
تعطي الصفوف المسمّاة مدلولًا لكل عنصر في الصف وتزيد من مقروئية وتوثيقية الشيفرة، ويمكن استخدام الصفوف المسمّاة في أي مكان تُستخدم فيه الصفوف العادية، ويمكن الوصول إلى الحقول فيها عن طريق الاسم عوضًا عن الموقع. | تعطي الصفوف المسمّاة مدلولًا لكل عنصر في الصف وتزيد من مقروئية وتوثيقية الشيفرة، ويمكن استخدام الصفوف المسمّاة في أي مكان تُستخدم فيه الصفوف العادية، ويمكن الوصول إلى الحقول فيها عن طريق الاسم عوضًا عن الموقع. | ||
== [[Python/OrderedDict|كائنات OrderedDict]] == | == [[Python/OrderedDict|كائنات <code>OrderedDict</code>]] == | ||
القواميس المرتّبة مطابقة للقواميس العادية باستثناء أنّا تتذكر ترتيب العناصر لحظة إدراجها فيها، بمعنى أنّه عند إضافة العناصر إلى قاموس مرتب، تعاد العناصر حسب ترتيب مفاتيحها عند إضافتها أول مرّة. | القواميس المرتّبة مطابقة للقواميس العادية باستثناء أنّا تتذكر ترتيب العناصر لحظة إدراجها فيها، بمعنى أنّه عند إضافة العناصر إلى قاموس مرتب، تعاد العناصر حسب ترتيب مفاتيحها عند إضافتها أول مرّة. | ||
== [[Python/UserDict|كائنات UserDict]] == | == [[Python/UserDict|كائنات <code>UserDict</code>]] == | ||
يعدّ UserDict صنفًا يغلّف كائنات القاموس في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف [[Python/dict|dict]]، ولكن التعامل مع هذا الصنف أسهل بسبب كون إمكانية الوصول إلى القاموس الضمني كخاصية. | يعدّ <code>UserDict</code> صنفًا يغلّف كائنات [[Python/dict|القاموس]] في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف [[Python/dict|<code>dict</code>]]، ولكن التعامل مع هذا الصنف أسهل بسبب كون إمكانية الوصول إلى القاموس الضمني كخاصية. | ||
== [[Python/UserList|كائنات UserList]] == | == [[Python/UserList|كائنات <code>UserList</code>]] == | ||
يعدّ <code>UserDict</code> صنفًا يغلّف القوائم في بايثون، ويعدّ صنفًا أساسيًا مفيدًا لإنشاء أصناف شبيهة بالقوائم خاصّة بالمستخدم، والتي يمكن الوراثة منها وإعادة تعريف توابعها وإضافة توابع أخرى جديدة، وهكذا يمكن إضافة عمليات جديدة على القوائم. | يعدّ <code>UserDict</code> صنفًا يغلّف القوائم في بايثون، ويعدّ صنفًا أساسيًا مفيدًا لإنشاء أصناف شبيهة بالقوائم خاصّة بالمستخدم، والتي يمكن الوراثة منها وإعادة تعريف توابعها وإضافة توابع أخرى جديدة، وهكذا يمكن إضافة عمليات جديدة على القوائم. | ||
== [[Python/UserString|كائنات UserString]] == | == [[Python/UserString|كائنات <code>UserString</code>]] == | ||
يعدّ <code>UserString</code> صنفًا يغلّف السلاسل النصية في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف [[Python/dict|str]]، ولكن التعامل مع هذا الصنف أسهل بسبب إمكانية الوصول إلى السلسلة النصية الضمنية كخاصية. | يعدّ <code>UserString</code> صنفًا يغلّف السلاسل النصية في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف [[Python/dict|<code>str</code>]]، ولكن التعامل مع هذا الصنف أسهل بسبب إمكانية الوصول إلى السلسلة النصية الضمنية كخاصية. | ||
== انظر أيضًا == | == انظر أيضًا == |
المراجعة الحالية بتاريخ 20:04، 29 نوفمبر 2018
تتضمّن هذه الوحدة أنواع بيانات متخصّصة بالحاويات container وتقدّم بدائل للحاويات الداخلية dict
و list
و set
و tuple
.
تقدّم هذه الوحدة الكائنات التالية:
namedtuple
|
دالة مولِّدة factory function لإنشاء أصناف فرعية من صفٍّ يتضمن حقولًا مسمّاة |
deque
|
حاوية شبيهة بالقوائم تمتاز بأدائها السريع في إضافة العناصر وحذفها في كلا الطرفين. |
ChainMap
|
صنف شبيه بالقواميس يستخدم لإنشاء عرض منفرد لعمليات ربط mapping متعددة |
Counter
|
صنف فرعي من الصنف dict الهدف منه عدّ الكائنات القابلة للتقطيع hashable
|
OrderedDict
|
صنف فرعي من الصنف dict يمكنه تذكّر ترتيب العناصر عند إضافتها
|
defaultdict
|
صنف فرعي من الصنف dict يستدعي دالة مولّدة تقدّم القيم المفقودة
|
UserDict
|
تغليف حول كائنات القواميس لتسهيل عملية تفريع أصناف القواميس |
UserList
|
تغليف حول كائنات القوائم لتسهيل عملية تفريع أصناف القوائم |
UserString
|
تغليف حول كائنات السلاسل النصية لتسهيل عملية تفريع أصناف السلاسل النصية |
ملاحظة: نُقلت الأصناف المجردة الأساسية للمجموعات Collections Abstract Base Classes في الإصدار 3.3 من بايثون إلى الوحدة collections.abc
. ولغرض التوافق مع الإصدارات السابقة من اللغة، ستبقى هذه الأصناف في وحدة collections
حتى الإصدار 3.7، وستحذف منها بعد ذلك بصورة نهائية.
كائنات ChainMap
يقدّم الصنف Chainmap
طريقة سريعة لربط عدد من عمليات الربط mappings ليصبح بالإمكان التعامل معها كوحدة واحدة. وعادة ما تكون هذه الطريقة أسرع من إنشاء قاموس جديد واستدعاء التابع update()
مرّات عدة.
يمكن استخدام هذا الصنف لمحاكاة النطاقات المتشعّبة وهو مفيد في عملية القولبة templating.
كائنات Counter
تقدم كائنات Counter
(العدادات) أداة سريعة ومريحة لإجراء عمليات العدّ والحصول على المجموع.
كائنات deque
تعدّ deques
تعميمًا للأكداس والطوابير stacks and queues (يقرأ الاسم هكذا "deck" وهو اختصار للعبارة "double-ended queue").
تدعم deques
عمليات الإضافة والحذف من طرفي كائن deque
مع ضمان سلامة الخيوط thread-safe ودون استهلاك كبير للذاكرة وبأداء مقارب لأداء O(1)
في كلا الاتجاهين.
كائنات defaultdict
صنف متفرّع من الصنف الداخلي dict
يعيد تعريف override تابع واحد ويضيف متغير نسخة واحدًا قابلًا للكتابة.
الصفوف المسمّاة namedtuples
تعطي الصفوف المسمّاة مدلولًا لكل عنصر في الصف وتزيد من مقروئية وتوثيقية الشيفرة، ويمكن استخدام الصفوف المسمّاة في أي مكان تُستخدم فيه الصفوف العادية، ويمكن الوصول إلى الحقول فيها عن طريق الاسم عوضًا عن الموقع.
كائنات OrderedDict
القواميس المرتّبة مطابقة للقواميس العادية باستثناء أنّا تتذكر ترتيب العناصر لحظة إدراجها فيها، بمعنى أنّه عند إضافة العناصر إلى قاموس مرتب، تعاد العناصر حسب ترتيب مفاتيحها عند إضافتها أول مرّة.
كائنات UserDict
يعدّ UserDict
صنفًا يغلّف كائنات القاموس في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف dict
، ولكن التعامل مع هذا الصنف أسهل بسبب كون إمكانية الوصول إلى القاموس الضمني كخاصية.
كائنات UserList
يعدّ UserDict
صنفًا يغلّف القوائم في بايثون، ويعدّ صنفًا أساسيًا مفيدًا لإنشاء أصناف شبيهة بالقوائم خاصّة بالمستخدم، والتي يمكن الوراثة منها وإعادة تعريف توابعها وإضافة توابع أخرى جديدة، وهكذا يمكن إضافة عمليات جديدة على القوائم.
كائنات UserString
يعدّ UserString
صنفًا يغلّف السلاسل النصية في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف str
، ولكن التعامل مع هذا الصنف أسهل بسبب إمكانية الوصول إلى السلسلة النصية الضمنية كخاصية.
انظر أيضًا
الوحدة collections.abc
في بايثون.