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

من موسوعة حسوب
لا ملخص تعديل
ط استبدال النص - 'Python/set-operations' ب'Python/set_operations'
 
(16 مراجعة متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:المجموعات set في بايثون}}</noinclude>
المجموعة (set) هي مجموعة من الكائنات غير المرتّبة وغير المكرّرة وغير القابلة للتعديل (immutable). تستخدم المجموعات عادة لاختبار وجود العناصر وللتخلص من المدخلات المكرّرة.
المجموعة set هي مجموعة من الكائنات غير المرتّبة وغير المكرّرة وغير القابلة للتعديل (immutable). تستخدم المجموعات عادة لاختبار وجود العناصر وللتخلص من المدخلات المكرّرة. تدعم كائنات المجموعات العمليات الرياضية مثل الاتحاد (union)، التقاطع (intersection)، الاختلاف (difference)، والاختلاف المتناظر (symmetric difference) (راجع [[Python/set operations|عمليات المجموعات في بايثون]]).


تستخدم الأقواس المعقوفة أو الدالة <code>set()</code>‎ لإنشاء مجموعة جديدة:<syntaxhighlight lang="python3">
تدعم كائنات المجموعات العمليات الرياضية مثل الاتحاد ([[Python/set/union|union]])، التقاطع ([[Python/set/intersection|intersection]])، الاختلاف ([[Python/set/difference|difference]])، والاختلاف المتناظر ([[Python/set/symmetric difference|symmetric difference]]) (راجع [[Python/set operations|عمليات المجموعات في بايثون]]).
==إنشاء مجموعة جديدة==
تستخدم الأقواس المعقوفة <code>{}</code> أو الدالة <code>set()</code>‎ لإنشاء مجموعة جديدة:<syntaxhighlight lang="python3">
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # تحذف اللغة العناصر المكررة
>>> print(basket)                      # تحذف اللغة العناصر المكررة
سطر 25: سطر 26:


</syntaxhighlight>
</syntaxhighlight>
 
==Set comprehensios==
== Set comprehensios ==
تدعم بايثون set comprehensions بطريقة تشبه [[Python/list|list comprehensions]]:<syntaxhighlight lang="python3">
تدعم بايثون set comprehensions بطريقة تشبه [[Python/list|list comprehensions]]:<syntaxhighlight lang="python3">
>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a = {x for x in 'abracadabra' if x not in 'abc'}
سطر 32: سطر 32:
{'r', 'd'}
{'r', 'd'}
</syntaxhighlight>
</syntaxhighlight>
 
==المجموعات الجامدة (frozenset)==
== المجموعات الجامدة frozenset ==
المجموعات الجامدة هي مجموعات غير قابلة للتعديل (immutable) ويمكن إنشاؤها باستخدام الدالة الداخلية <code>[[Python/frozenset|frozenset()]]‎</code>:<syntaxhighlight lang="python3">
المجموعات الجامدة هي مجموعات غير قابلة للتعديل (immutable) ويمكن إنشاؤها باستخدام الدالة الداخلية <code>frozenset()‎</code>:<syntaxhighlight lang="python3">
>>> coord = frozenset('xyz')
>>> coord = frozenset('xyz')
>>> coord
>>> coord
frozenset({'y', 'z', 'x'})
frozenset({'y', 'z', 'x'})
</syntaxhighlight>لما كانت المجموعات الجامدة غير قابلة للتعديل وقابلة للتقطيع (hashable) فبالإمكان استخدامها كعناصر لمجموعات أخرى، أو كمفاتيح في [[Python/dict|القواميس]].
==الدالة <code>set()</code>‎==
إضافة إلى استخدامها لإنشاء مجموعة فارغة، تُستخدم الدالة <code>set()</code>‎ كذلك لتحويل كائن قابل للتّكرار إلى مجموعة كما يلي:<syntaxhighlight lang="python3">
>>> set([1, 2, 3]) # تحويل قائمة إلى مجموعة
{1, 2, 3}
>>> set((1, 2, 3)) # تحويل صفّ إلى مجموعة
{1, 2, 3}
>>> set('ABCD') # تحويل سلسلة نصيّة إلى مجموعة
{'A', 'B', 'C', 'D'}
>>> set(range(1, 10)) # تحويل كائن مجال إلى مجموعة
{1, 2, 3, 4, 5, 6, 7, 8, 9}
</syntaxhighlight>
</syntaxhighlight>
==المقارنة بين المجموعات==
*يدعم كلا نوعي المجموعات المقارنة بين مجموعة وأخرى.
*تكون المجموعتان متساويتين إذا -وفقط إذا- كان كل عنصر في المجموعة الأولى موجودًا في المجموعة الثانية، بمعنى أنّ كل مجموعة هي مجموعة فرعية (subset) للأخرى.
*تكون المجموعة أصغر من الأخرى إذا -وفقط إذا- كانت المجموعة الأولى مجموعة فرعية صحيحة للمجموعة الثانية، بمعنى أنّ تكون مجموعة فرعية وليست مساوية لها.
*تكون المجموعة أكبر من الأخرى إذا -وفقط إذا- كانت المجموعة الأولى مجموعة حاوية (superset) صحيحة للمجموعة الثانية، بمعنى أنّ تكون مجموعة حاوية وليست مساوية لها.
==الدوال التابعة للكائن <code>set</code>==
'''ملاحظة''': تدعم المجموعات والمجموعات الجامدة الدوال التالية:
===<code>[[Python/set/len|set.len()‎]]</code>===
إعادة عدد العناصر في المجموعة.
===<code>[[Python/set/isdisjoint|set.isdisjoint()‎]]</code>===
التحقق من وجود عناصر مشتركة مع مجموعة أخرى.
===<code>[[Python/set/issubset|set.issubset()‎]]</code>===
التحقق من وجود عناصر المجموعة الأصلية كلّها في مجموعة أخرى. يؤدّي العامل <code>[[Python/set_operations|‎<=]]‎</code> الوظيفة نفسها عند استخدامه مع المجموعات.
===<code>[[Python/set/issuperset|set.issuperset()‎]]</code>===
التحقق من وجود عناصر المجموعة الثانية كلّها في المجموعة الأصلية. يؤدّي العامل <code>[[Python/set_operations|‎>=‎]]</code> الوظيفة نفسها عند استخدامه مع المجموعات.
===<code>[[Python/set/union|set.union()‎]]</code>===
دمج عناصر المجموعة الأصلية مع جميع عناصر المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (<code>[[Python/set_operations|<nowiki>|</nowiki>]]</code>) الوظيفة نفسها عند استخدامه مع المجموعات.
===<code>[[Python/set/intersection|set.intersection()‎]]</code>===
إعادة العناصر المشتركة (التقاطع) بين المجموعة الأصلية وجميع عناصر المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (<code>[[Python/set_operations|&]]</code>) الوظيفة نفسها عند استخدامه مع المجموعات.
===<code>[[Python/set/difference|set.difference()‎]]</code>===
إعادة العناصر غير المشتركة بين المجموعة الأصلية وجميع عناصر المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (<code>[[Python/set_operations|-]]</code>) الوظيفة نفسها عند استخدامه مع المجموعات.
===<code>[[Python/set/symmetric difference|set.symmetric_difference()‎]]</code>===
إعادة العناصر الموجودة في المجموعة الأصلية والمجموعة الأخرى الممررة إلى التابع ولكن ليس في كليهما. يؤدي العامل (<code>[[Python/set_operations|^]]</code>) الوظيفة نفسها عند استخدامه مع المجموعات.
===<code>[[Python/set/copy|set.copy()‎]]</code>===
يؤدي التابع عملية نسخ سطحية (shallow copy) للمجموعة.


لما كانت المجموعات الجامدة غير قابلة للتعديل وقابلة للتقطيع (hashable) فبالإمكان استخدامها كعناصر لمجموعات أخرى، أو كمفاتيح في [[Python/dict|القواميس]].
'''ملاحظة:''' التوابع التالية مدعومة من قبل المجموعات حصرًا.
===<code>[[Python/set/update|set.update()‎]]</code>===
تحديث المجموعة الأصلية بعد دمج عناصرها مع جميع عناصر المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل <code>(‎[[Python/set_operations|=|]])</code> الوظيفة نفسها عند استخدامه مع المجموعات.
===<code>[[Python/set/intersection update|set.intersection_update()‎]]</code>===
تحديث المجموعة الأصلية بإضافة العناصر المشتركة (التقاطع) بينها وبين المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (‎<code>[[Python/set_operations|&=‎]]</code>) الوظيفة نفسها عند استخدامه مع المجموعات.
===<code>[[Python/set/difference update|set.difference_update()‎]]</code>===
تحديث المجموعة الأصلية وذلك بحذف العناصر الموجودة في المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (‎<code>[[Python/set_operations|-=‎]]</code>) الوظيفة نفسها عند استخدامه مع المجموعات.
===<code>[[Python/set/symmetric difference update|set.symmetric_difference_update()‎]]</code>===
تحديث المجموعة الأصلية بالإبقاء على العناصر الموجودة في المجموعة الأصلية والمجموعة الأخرى الممررة إلى التابع ولكن ليس في كليهما. يؤدي العامل (‎<code>[[Python/set_operations|^=‎]]</code>) الوظيفة نفسها عند استخدامه مع المجموعات.
===<code>[[Python/set/add|set.add()‎]]</code>===
إضافة عنصر واحد إلى المجموعة.
===<code>[[Python/set/remove|set.remove()‎]]</code>===
حذف عنصر واحد من المجموعة.
===<code>[[Python/set/discard|set.discard()‎]]</code>===
حذف عنصر واحد من المجموعة إن كان موجودًا فيها.
===<code>[[Python/set/pop|set.pop()‎]]</code>===
حذف العنصر الأول من المجموعة.
===<code>[[Python/set/clear|set.clear()‎]]</code>===
حذف جميع عناصر المجموعة.
==انظر أيضًا==
*[[Python/set_operations|عمليات المجموعات في بايثون.]]
*[[Python/dict|القواميس dict في بايثون]].
*[[Python/list|القوائم list في بايثون]].
*[[Python/tuples|الصفوف tuple في بايثون]].
==مصادر==
*صفحة [https://docs.python.org/3/tutorial/datastructures.html#sets Data Structures] في توثيق بايثون الرسمي.


== مصادر ==
*[https://docs.python.org/3/library/functions.html#func-set قسم الدالة set في صفحة Functions في توثيق Python الرسمي].<noinclude>{{DISPLAYTITLE:المجموعات set في بايثون}}</noinclude>__TOC__
صفحة [https://docs.python.org/3/tutorial/datastructures.html#sets Data Structures] في توثيق بايثون الرسمي.
[[تصنيف:Python]]
[[تصنيف:Python]]
[[تصنيف:Python Types]]
[[تصنيف:Python Types]]
[[تصنيف:Mutable]]
[[تصنيف:Python Built-in Functions]]
[[تصنيف:Python Function]]

المراجعة الحالية بتاريخ 09:32، 10 يونيو 2018

المجموعة (set) هي مجموعة من الكائنات غير المرتّبة وغير المكرّرة وغير القابلة للتعديل (immutable). تستخدم المجموعات عادة لاختبار وجود العناصر وللتخلص من المدخلات المكرّرة.

تدعم كائنات المجموعات العمليات الرياضية مثل الاتحاد (union)، التقاطع (intersection)، الاختلاف (difference)، والاختلاف المتناظر (symmetric difference) (راجع عمليات المجموعات في بايثون).

إنشاء مجموعة جديدة

تستخدم الأقواس المعقوفة {} أو الدالة set()‎ لإنشاء مجموعة جديدة:

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # تحذف اللغة العناصر المكررة
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # اختبار سريع لوجود عنصر ما ضمن المجموعة
True
>>> 'crabgrass' in basket
False
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # الأحرف غير المكرّرة في المجموعة
{'a', 'r', 'b', 'c', 'd'}

ملاحظة: لإنشاء مجموعة فارغة يجب استخدام الدالة set()‎ ولا يمكن استخدام الصيغة {} لأنّها تنشئ قاموسًا فارغًا.

تنطبق قواعد عدم التغيير الخاصة بمفاتيح القواميس على عناصر المجموعة. تخضع الأرقام للقواعد الطبيعية الخاصة بعمليات المقارنة بين الأرقام، فلو كان هناك رقمان تُظهر المقارنة بينهما أنّهما متساويان (مثل 1 و 1.0) فيمكن حينئذ لواحد منهما فقط أن يكون موجودًا في المجموعة.

على الرغم من أنّ عناصر المجموعة يجب أن تكون من الأنواع غير القابلة للتعديل؛ إلا أنّ المجموعة بحدّ ذاتها قابلة للتعديل، مثال:

>>> basket = {'apple', 'orange', 'banana'}
>>> basket.add('strawberry')
>>> basket
{'strawberry', 'banana', 'apple', 'orange'}

Set comprehensios

تدعم بايثون set comprehensions بطريقة تشبه list comprehensions:

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

المجموعات الجامدة (frozenset)

المجموعات الجامدة هي مجموعات غير قابلة للتعديل (immutable) ويمكن إنشاؤها باستخدام الدالة الداخلية frozenset():

>>> coord = frozenset('xyz')
>>> coord
frozenset({'y', 'z', 'x'})

لما كانت المجموعات الجامدة غير قابلة للتعديل وقابلة للتقطيع (hashable) فبالإمكان استخدامها كعناصر لمجموعات أخرى، أو كمفاتيح في القواميس.

الدالة set()

إضافة إلى استخدامها لإنشاء مجموعة فارغة، تُستخدم الدالة set()‎ كذلك لتحويل كائن قابل للتّكرار إلى مجموعة كما يلي:

>>> set([1, 2, 3]) # تحويل قائمة إلى مجموعة
{1, 2, 3}
>>> set((1, 2, 3)) # تحويل صفّ إلى مجموعة
{1, 2, 3}
>>> set('ABCD') # تحويل سلسلة نصيّة إلى مجموعة
{'A', 'B', 'C', 'D'}
>>> set(range(1, 10)) # تحويل كائن مجال إلى مجموعة
{1, 2, 3, 4, 5, 6, 7, 8, 9}

المقارنة بين المجموعات

  • يدعم كلا نوعي المجموعات المقارنة بين مجموعة وأخرى.
  • تكون المجموعتان متساويتين إذا -وفقط إذا- كان كل عنصر في المجموعة الأولى موجودًا في المجموعة الثانية، بمعنى أنّ كل مجموعة هي مجموعة فرعية (subset) للأخرى.
  • تكون المجموعة أصغر من الأخرى إذا -وفقط إذا- كانت المجموعة الأولى مجموعة فرعية صحيحة للمجموعة الثانية، بمعنى أنّ تكون مجموعة فرعية وليست مساوية لها.
  • تكون المجموعة أكبر من الأخرى إذا -وفقط إذا- كانت المجموعة الأولى مجموعة حاوية (superset) صحيحة للمجموعة الثانية، بمعنى أنّ تكون مجموعة حاوية وليست مساوية لها.

الدوال التابعة للكائن set

ملاحظة: تدعم المجموعات والمجموعات الجامدة الدوال التالية:

set.len()‎

إعادة عدد العناصر في المجموعة.

set.isdisjoint()‎

التحقق من وجود عناصر مشتركة مع مجموعة أخرى.

set.issubset()‎

التحقق من وجود عناصر المجموعة الأصلية كلّها في مجموعة أخرى. يؤدّي العامل ‎<= الوظيفة نفسها عند استخدامه مع المجموعات.

set.issuperset()‎

التحقق من وجود عناصر المجموعة الثانية كلّها في المجموعة الأصلية. يؤدّي العامل ‎>=‎ الوظيفة نفسها عند استخدامه مع المجموعات.

set.union()‎

دمج عناصر المجموعة الأصلية مع جميع عناصر المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (|) الوظيفة نفسها عند استخدامه مع المجموعات.

set.intersection()‎

إعادة العناصر المشتركة (التقاطع) بين المجموعة الأصلية وجميع عناصر المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (&) الوظيفة نفسها عند استخدامه مع المجموعات.

set.difference()‎

إعادة العناصر غير المشتركة بين المجموعة الأصلية وجميع عناصر المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (-) الوظيفة نفسها عند استخدامه مع المجموعات.

set.symmetric_difference()‎

إعادة العناصر الموجودة في المجموعة الأصلية والمجموعة الأخرى الممررة إلى التابع ولكن ليس في كليهما. يؤدي العامل (^) الوظيفة نفسها عند استخدامه مع المجموعات.

set.copy()‎

يؤدي التابع عملية نسخ سطحية (shallow copy) للمجموعة.

ملاحظة: التوابع التالية مدعومة من قبل المجموعات حصرًا.

set.update()‎

تحديث المجموعة الأصلية بعد دمج عناصرها مع جميع عناصر المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (‎=|) الوظيفة نفسها عند استخدامه مع المجموعات.

set.intersection_update()‎

تحديث المجموعة الأصلية بإضافة العناصر المشتركة (التقاطع) بينها وبين المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (‎&=‎) الوظيفة نفسها عند استخدامه مع المجموعات.

set.difference_update()‎

تحديث المجموعة الأصلية وذلك بحذف العناصر الموجودة في المجموعة أو المجموعات الأخرى الممررة إلى التابع. يؤدي العامل (‎-=‎) الوظيفة نفسها عند استخدامه مع المجموعات.

set.symmetric_difference_update()‎

تحديث المجموعة الأصلية بالإبقاء على العناصر الموجودة في المجموعة الأصلية والمجموعة الأخرى الممررة إلى التابع ولكن ليس في كليهما. يؤدي العامل (‎^=‎) الوظيفة نفسها عند استخدامه مع المجموعات.

set.add()‎

إضافة عنصر واحد إلى المجموعة.

set.remove()‎

حذف عنصر واحد من المجموعة.

set.discard()‎

حذف عنصر واحد من المجموعة إن كان موجودًا فيها.

set.pop()‎

حذف العنصر الأول من المجموعة.

set.clear()‎

حذف جميع عناصر المجموعة.

انظر أيضًا

مصادر