English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دروس بايثون الأساسية

تحكم في تدفق بايثون

معلمات الوظائف في Python

أنواع البيانات في Python

عمليات ملفات بايثون

الأجسام والفئات في بايثون

التاريخ والوقت في بايثون

معرفة متقدمة في بايثون

دليل بايثون

القاموس (Dictionary) في Python

في هذا المقال، ستعلم كل شيء عن مجموعات بايثون; كيفية إنشائها، إضافة أو إزالة العناصر فيها، والعمليات التي يمكن تنفيذها على مجموعات في بايثون.

ما هو الجمع في بايثون؟

الجمع هو مجموعة غير منضوية من العناصر. كل عنصر فريد (لا يوجد عنصر مكرر) ويجب أن يكون غير قابل للتغيير (لا يمكن تعديله).

لكن الجمع نفسه قابل للتغيير. يمكننا إضافة أو إزالة العناصر منه.

يمكن استخدام الجمع لأداء عمليات حسابية على مجموعات، مثل الاتحاد، التداخل، الاختلاف المتناسب، إلخ.

كيفية إنشاء الجمع؟

بوضع جميع العناصر (العناصر) داخل الأقواس {} والمفصولة بالكومات أو باستخدام دالة مدمجة مثل set().

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

# مجموعة من الأعداد الصحيحة
my_set = {1, 2, 3}
print(my_set)
# مجموعة من أنواع البيانات المختلفة
my_set = {1.0, "Hello", (1, 2, 3)}
print(my_set)

أحاول أيضًا هذا المثال.

# مجموعة بدون تكرار
# 输出: {1, 2, 3, 4}
my_set = {1,2,3,4,3,2}
print(my_set)
# لا يمكن للجمع أن يحتوي على عناصر قابلة للتغيير
# هنا [3،4] هو قائمة قابلة للتغيير
# إذا قمت بتعطيل السطر 12،
# هذا سيؤدي إلى خطأ.
# TypeError: unhashable type: 'list'
# my_set = {1, 2, [3, 4]}
# يمكننا توليد مجموعة من القائمة
# 输出: {1, 2, 3}
my_set = set([1,2,3,2])
print(my_set)

إن إنشاء مجموعة فارغة له طابع خاص.

المقدار الفارغ {} سيسمح لك بإنشاء دليل فارغ في بايثون. من أجل إنشاء مجموعة لا تحتوي على أي عنصر، نستخدم دالة set() بدون أي معاملات.

# تحديد باستخدام {}
a = {}
# فحص نوع البيانات الخاصة بa
# خروج:  <class 'dict'>
print(type(a))
# تحديد باستخدام set()
a = set()
# فحص نوع البيانات الخاصة بa
# خروج:  <class 'set'>
print(type(a))

كيفية تغيير الجمع في بايثون؟

الجمع غير ثابت. ولكن نظرًا لأنها غير منضوية، فإن المؤشرات ليست لها معنى.

我们无法使用索引或切片来访问或更改集合的元素。集不支持它。

我们可以使用add()方法添加单个元素,使用update()方法添加多个元素。update()方法可以采用元组,列表,字符串或其他集合作为其参数。在所有情况下,都避免重复。

# تعيين my_set
my_set = {1,3}
print(my_set)
# 如果取消注释第9行,
# 你会得到一个错误
# TypeError: 'set' object does not support indexing
#my_set[0]
# 增加一个元素
# 输出: {1, 2, 3}
my_set.add(2)
print(my_set)
# 增加多个元素
# 输出: {1, 2, 3, 4}
my_set.update([2,3,4])
print(my_set)
# 增加 list 和set
# 输出: {1, 2, 3, 4, 5, 6, 8}
my_set.update([4,5], {1,6,8})
print(my_set)

运行该程序时,输出为:

{1, 3}
{1، 2، 3}
{1, 2, 3, 4}
{1, 2, 3, 4, 5, 6, 8}

如何从集合中删除元素?

可以使用discard()和remove()方法从集合中删除特定项目。

两者之间的唯一区别是,如果使用discard(),而项目不存在于集合中,则它保持不变。但是remove()在这种情况下会引发错误。

以下示例将说明这一点。

# تعيين my_set
my_set = {1, 3, 4, 5, 6}
print(my_set)
# 抛弃一个元素
# 输出: {1, 3, 5, 6}
my_set.discard(4)
print(my_set)
# 移除已个元素
# 输出: {1, 3, 5}
my_set.remove(6)
print(my_set)
# 抛弃一个元素
# 没有出现在 my_set
# 输出: {1, 3, 5}
my_set.discard(2)
print(my_set)
# remove一个元素
# 没有出现在 my_set
# 如果没有注释#my_set.remove(2),
# 会抛出一个错误.
# 输出: KeyError: 2
#my_set.remove(2)

同样,我们可以使用pop()方法删除并返回一个项目。

集合为无序,无法确定将弹出哪个项目。这是完全任意的。

我们可以使用clear()方法删除集合中的所有项目。

# تعيين my_set
# 输出: 唯一元素集
my_set = set("HelloWorld")
print(my_set)
# pop出一个元素
# Output: عنصر عشوائي
print(my_set.pop())
# pop أي عنصر
# Output: عنصر عشوائي
my_set.pop()
print(my_set)
# إزالة my_set
# Output: set()
my_set.clear()
print(my_set)

عمليات المجموعات في بايثون

يمكن استخدام المجموعات للقيام بعمليات الرياضيات على المجموعات، مثل الاتحاد، التقاء، الاختلاف والاختلاف المتناسب. يمكن تنفيذ ذلك عبر عمودي أو دوال.

دعنا نفكر في مجموعتين用于 التالي.

>>> A = {1، 2، 3، 4، 5}
>>> B = {4، 5، 6، 7، 8}

الاتحاد في المجموعات

الاتحاد بين A و B هو مجموعة جميع العناصر التي تأتي من كلا المجموعتين.

الاتحاد يتم تنفيذه باستخدام عمودي|. يمكن تنفيذ نفس العملية باستخدام دالة union().

# تعيين A و B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# استخدام عمودي |
# Output: {1، 2، 3، 4، 5، 6، 7، 8}
print(A | B)

تجربة الأمثلة التالية في شل Python.

# استخدام دالة الاتحاد
>>> A.union(B)
{1، 2، 3، 4، 5، 6، 7، 8}
# استخدام دالة الاتحاد في B
>>> B.union(A)
{1، 2، 3، 4، 5، 6، 7، 8}

التقاء المجموعات

مجموعة Aومجموعة Bالتقاء هو مجموعة العناصر المشتركة في كلا المجموعتين.

التقاء يتم تنفيذه باستخدام عمودي &. يمكن تنفيذ نفس العملية باستخدام دالة intersection().

# تعيين A و B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# استخدام عمودي &
# Output: {4، 5}
print(A & B)

تجربة الأمثلة التالية في شل Python.

# استخدام دالة التقاء في A
>>> A.intersection(B)
{4، 5}
# استخدام دالة التقاء في B
>>> B.intersection(A)
{4، 5}

الاختلاف في المجموعات

الاختلاف بين A و B (A-B) هو مجموعة العناصر موجودة في A فقط وليس في B. وبالمثل، B-A هي مجموعة العناصر موجودة في B وليس في A.

الاختلاف يتم تنفيذه باستخدام عمودي -. يمكن تنفيذ نفس العملية باستخدام دالة difference().

# تعيين A و B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# استخدام عمودي - في A
# Output: {1، 2، 3}
print(A - B)

تجربة الأمثلة التالية في شل Python.

# استخدام دالة الاختلاف في A
>>> A.difference(B)
{1، 2، 3}
# استخدام عمودي - في B
>>> B - A
{8، 6، 7}
# استخدام دالة الاختلاف في B
>>> B.difference(A)
{8، 6، 7}

الاختلاف المتناسب في المجموعات

الاختلاف المتناسب بين A و B هو مجموعة العناصر في A و B، لكن العناصر متطابقة في كلاهما.

استخدام عمودي ^ لتنفيذ الاختلاف المتناسب. يمكن تنفيذ نفس العملية باستخدام دالة symmetric_difference().

# تعيين A و B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# باستخدام عمودية ^
# الناتج: {1, 2, 3, 6, 7, 8}
print(A ^ B)

تجربة الأمثلة التالية في شل Python.

# استخدام دالة symmetric_difference على A
>>> A.symmetric_difference(B)
{1, 2, 3, 6, 7, 8}
# استخدام دالة symmetric_difference على B
>>> B.symmetric_difference(A)
{1, 2, 3, 6, 7, 8}

طرق مجموعة Python المختلفة

هناك العديد من طرق مجموعة Python، تم استخدام بعضها بالفعل. هذه هي قائمة بجميع الطرق المتاحة للمجموعة Set.

طرق Python Set
الطريقةوصف
add()إضافة العنصر إلى المجموعة
clear()إزالة جميع العناصر من المجموعة
copy()إرجاع نسخة من المجموعة
difference()إرجاع الفرق بين مجموعتين أو أكثر كمجموعة جديدة
difference_update()إزالة جميع العناصر من المجموعة الأخرى
discard()إزالة العنصر إذا كان عضواً. إذا لم يكن العنصر في المجموعة، لا يتم تنفيذ أي عملية
intersection()إرجاع التكامل بين المجموعتين كمجموعة جديدة
intersection_update()تحديث المجموعة باستخدام التكامل مع نفسها وأخرى
isdisjoint()إرجاع True إذا كانت نقطة التقاء المجموعتين فارغة 
issubset()إرجاع True إذا كانت المجموعة الأخرى تحتوي على هذه المجموعة
issuperset()إرجاع True إذا كانت المجموعة تحتوي على المجموعة الأخرى
pop()إزالة وإرجاع عنصر عشوائي من المجموعة. يُرفع خطأ KeyError إذا كانت المجموعة فارغة
remove()إزالة عنصر واحد من المجموعة. إذا لم يكن العنصر عضواً، يُطلق خطأ KeyError
symmetric_difference()إرجاع الاختلاف المتناظر بين المجموعتين كمجموعة جديدة
symmetric_difference_update()تحديث مجموعة واحدة باستخدام الاختلاف المتناظر مع نفسها وأخرى
union()إرجاع التكامل بين المجموعتين كمجموعة جديدة
update()تحديث المجموعة باستخدام التكامل مع نفسها وأخرى

عمليات المجموعة الأخرى

اختبار عضوية المجموعة

يمكننا استخدام كلمة المفتاح in لاختبار وجود العنصر في المجموعة.

# تعيين my_set
my_set = set("apple")
# التحقق من وجود 'a'
# خروج: True
print('a' in my_set)
# التحقق من وجود 'p'
# خروج: False
print('p' not in my_set)

مرور الجمعية

يمكننا استخدام الدائرة للمرور على كل عنصر في الجمعية.

>>> for letter in set("apple"):
... print(letter)
...    
a
p
e
l

الجمعيات مع الوظائف المدمجة

الوظائف المدمجة مثل all()،any()،enumerate()،len()،max()،min()،sort()،sum() تستخدم غالبًا مع الجمعيات للتنفيذ المختلفة.

مع الوظائف المدمجة
وظيفةوصف
all()

إذا كانت جميع العناصر في الجمعية صحيحة (أو كانت الجمعية فارغة)، يعود بـ True.

any()

إذا كان أي عنصر في الجمعية صحيحًا، يعود بـ True. إذا كانت الجمعية فارغة، يعود بـ False.

enumerate()يعود بجدول مرتب يحتوي على جميع الأنماط من جميع العناصر.
len()يعود بالطول (عدد العناصر) في الجمعية.
max()يعود بالعنصر الأكبر في الجمعية.
min()يعود بالعنصر الأصغر في الجمعية.
sorted()يعود بجدول مرتب جديد من العناصر في الجمعية (لا يغير الجمعية نفسها).
sum()يعود بجمع جميع العناصر في الجمعية.

Python Frozenset

Frozenset هو فئة جديدة تحتوي على خصائص الجمعيات، ولكن لا يمكن تغيير عناصرها بعد تخصيصها. العناصر غير القابلة للتغيير هي قوائم غير قابلة للتغيير، بينما الجمعيات المجمدة هي جمعيات غير قابلة للتغيير.

الجمعيات القابلة للتغيير غير القابلة للتشكيل، لذلك لا يمكن استخدامها كأصابع دليل. من ناحية أخرى، frozenset قابلة للتشكيل، يمكن استخدامها كأصابع دليل.

يمكن استخدام الدالةFrozenset()إنشاءFrozensets.

يتم دعم هذه الطريقة للنوع البياني، مثل copy()،difference()،intersection()،isdisjoint()،issubset()،issuperset()،symmetric_difference() وunion()، بسبب كونه غير قابل للتغيير، لا يوجد طريقة لإضافة أو حذف العناصر.

# تعيين A و B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])

تجربة هذه الأمثلة في بيئة Python shell.

>>> A.isdisjoint(B)
False
>>> A.difference(B)
frozenset({1, 2})
>>> A | B
frozenset({1, 2, 3, 4, 5, 6})
>>> A.add(3)
...
AttributeError: 'frozenset' object has no attribute 'add'