مجموعات في الرياضيات ، هناك شيء مثل المجموعة (أو نظرية المجموعات). ربما كنت قد درستها في دورة الرياضيات. قد تكون على دراية بمخططات فين.
من الناحية العملية ، يمكن اعتبار المجموعة ببساطة على أنها مجموعة محددة جيدًا من الكائنات الفردية ، تسمى العناصر أو الأعضاء.
يمكن أن يكون تجميع الكائنات في مجموعة مفيدًا في البرمجة ، وتوفر لنا Python النوع المدمج set .

المجموعات (type set ) تختلف عن الأنواع الأخرى من الكائنات في العمليات الفريدة التي يمكن إجراؤها عليها.

النوع المدمج set في بايثون له الخصائص التالية:
  • عناصر المجموعة غير مرتبة (بمعنى أن مجموعتين متكافئتين إذا كانتا تحتويان على نفس العناصر & nbsp ؛). لا يتم تخزين عناصر المجموعة بالتسلسل ، ولكن وفقًا لخوارزميات معينة تتيح لك تحديد ما إذا كان العنصر ينتمي إلى مجموعة (بدون تعداد جميع العناصر) ؛
  • عناصر المجموعة فريدة من نوعها. العناصر المكررة غير مسموح بها ؛
  • المجموعات قابلة للتغيير (على سبيل المثال ، يمكنك إضافة عنصر إلى مجموعة) ، ولكن العناصر نفسها داخل المجموعة يجب أن تكون ثابتة (أرقام ، سلاسل ، مجموعات). لا يمكنك عمل قائمة أو مجموعة أخرى عنصر من مجموعة ؛

& nbsp؛

إنشاء & nbsp؛ تعيين
طريق واحد

ببساطة عدّد العناصر الموجودة في المجموعة بأقواس متعرجة.

x = {& quot؛ school & quot ؛، & quot؛ teacher & quot ؛، & quot؛ class & quot ؛، student}
على & nbsp؛

طريقان
استخدم الوظيفة المضمنة set () . س = مجموعة () نبسب ؛ على & nbsp ؛ # مجموعة فارغة list_name = [& quot؛ أندري & quot ؛، & quot؛ بوب & quot ؛، & quot؛ كارولين & quot؛] y = set (list_name) & nbsp؛ على & nbsp ؛ # يمكنك إنشاء عدة & nbsp ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ # من أي كائن قابل للتكرار z = مجموعة (["Andry"، "Bob"، "Caroline"]) & nbsp؛ نبسب ؛ # {& # 39 ؛ Bob & # 39 ؛، & # 39 ؛ كارولين & # 39 ؛، & # 39 ؛ أندري & # 39 ؛} k = set ((& quot؛ Andry & quot ؛، & quot؛ Bob & quot ؛، & quot؛ Caroline & quot؛)) & nbsp؛ نبسب ؛ # {& # 39 ؛ Bob & # 39 ؛، & # 39 ؛ كارولين & # 39 ؛، & # 39 ؛ أندري & # 39 ؛} s = "سلسلة s" م = مجموعة (مجموعات) نبسب ؛ & nbsp ؛ # {& # 39 ؛ i & # 39 ؛، & # 39 ؛ t & # 39 ؛، & # 39 ؛ g & # 39 ؛، & # 39 ؛ r & # 39 ؛، & # 39 ؛ n & # 39 ؛، & # 39 ؛ ق & # 39 ؛، & # 39 ؛ & # 39 ؛} - على & nbsp ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ # انتبه على & nbsp؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ # يمكن أن يكون ترتيب العناصر أيًا ، نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ # عناصر لا تتكرر n = {42، & # 39؛ foo & # 39 ؛، 3.14159، بلا، (1، 2، 3)} & nbsp؛ على & nbsp ؛ # عناصر في & nbsp ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ # يمكن أن يكون من أنواع مختلفة نبسب ؛
ضبط الإخراج يتم عرض عناصر المجموعة بترتيب عشوائي ، وليس بالضرورة بالترتيب الذي تمت إضافتها به. z = set ([& quot؛ Andry & quot ؛، & quot؛ Bob & quot ؛، & quot؛ Caroline & quot؛]) & nbsp؛ طباعة (ض) نبسب ؛ نبسب ؛ # {& # 39 ؛ Bob & # 39 ؛، & # 39 ؛ كارولين & # 39 ؛، & # 39 ؛ أندري & # 39 ؛} طباعة (* ض) نبسب ؛ نبسب ؛ # & nbsp ؛ بوب أندري كارولين

طرق العمل مع المجموعات


عدد العناصر في المجموعة تعرض طريقة len () عدد العناصر في المجموعة. ك = {42، & # 39؛ foo & # 39 ؛، 3.14159، بلا، (1، 2، 3)} & nbsp؛ طباعة (لين (ك)) نبسب ؛ نبسب ؛ # 5

& nbsp؛

تحديد & nbsp؛ ما إذا كان العنصر في مجموعة (العضوية & nbsp؛ in )
ك = {42، & # 39؛ foo & # 39 ؛، 3.14159، بلا، (1، 2، 3)} & nbsp؛ طباعة (42 في ك) نبسب ؛ على & nbsp ؛ # صحيح طباعة (2 في ك) نبسب ؛ نبسب ؛ # خطأ
على الرغم من أن العناصر الموجودة في المجموعة يجب أن تكون من النوع الثابت ، يمكن تغيير المجموعات نفسها. & nbsp؛

& nbsp؛

إضافة عنصر إلى & nbsp؛ set
x.add (& lt؛ elem & gt؛)
إلى المجموعة & nbsp؛ x يضيف & lt؛ elem & gt؛ الذي يجب أن يكون الكائن الوحيد الثابت.

& nbsp؛

إزالة عنصر من مجموعة 1) x.remove (& lt؛ elem & gt؛)
تمت إزالة & lt؛ elem & gt؛ & nbsp؛ من مجموعة x . تطرح Python استثناءً (خطأ) إذا لم يكن & lt؛ elem & gt؛ & nbsp؛ في x .

2) x.discard (& lt؛ elem & gt؛)
نفس الحذف ، ولكن في حالة عدم وجود عنصر في المجموعة ، فإنه لا يثير استثناء.

3) x.pop ()
يزيل ويعيد عنصر عشوائي من المجموعة. إذا كانت المجموعة فارغة في البداية ، فسيحدث استثناء (خطأ).

4) x.clear ()
يزيل كل العناصر من المجموعة (يمسح المجموعة).

هل تريد تعيين الفرز؟ كما نعلم ، لا يتم أخذ ترتيب العناصر في المجموعة في الاعتبار. فهل من المنطقي التحدث عن مجموعات الفرز في بايثون 3 ؟! (لهذا السبب توجد علامة استفهام في العنوان)

للعثور بسرعة على عنصر في مجموعة ، من المستحسن تخزينها في الذاكرة في شكل مرتب.

لنلق نظرة على بعض الأمثلة. ماذا يحدث لعناصر من أنواع بيانات مختلفة في نفس المجموعة؟ & nbsp ؛ لا ينبغي فرز هذه العناصر. إذا قمنا بطباعة العناصر باستخدام الأمر print () ، فسيتم إخراجها على النحو التالي: أ = {0 ، 1 ، 12 ، & # 39 ؛ ب & # 39 ؛ ، & # 39 ؛ أب & # 39 ؛ ، 3 ، 2 ، & # 39 ؛ أ & # 39 ؛} طباعة (أ) # {0 ، 1 ، 2 ، 3 ، & # 39 ؛ a & # 39 ؛، 12 ، & # 39 ؛ b & # 39 ؛، & # 39 ؛ ab & # 39 ؛} في هذه الحالة ، يتم عرض القيم التي لم يتم فرزها. إذا كررت بدء التشغيل ، فقد يكون ترتيب الإخراج مختلفًا. لكن هذا فقط إذا تم خلط عناصر من أنواع مختلفة.

دعنا نحاول عرض بيانات من نوع واحد (على سبيل المثال ، أرقام فقط): أ = {0 ، 1 ، 12 ، 3 ، 2} طباعة (أ) # {0 ، 1 ، 2 ، 3 ، 12} يتم عرض جميع العناصر بالترتيب. دعنا نحاول تحويلها إلى قائمة: أ = {0 ، 1 ، 12 ، 3 ، 2} ب = القائمة (أ) print (b) # [0، 1، 2، 3، 12] وبالمثل ، تمت كتابة العناصر التي تم فرزها بترتيب تصاعدي في القائمة.

اتضح أن العناصر مخزنة في الذاكرة بشكل مرتب إذا كانت من نفس النوع . لكن من الأفضل عدم الاعتماد عليها ، يمكن أن تتغير خوارزميات بايثون.

إذا كنت بحاجة إلى الحصول على قائمة مرتبة من مجموعة ، فمن الأفضل استخدام الترتيب (< code> Sorted) للتأكد من ذلك ). سيتم فرز العناصر بالضبط. ستكون شفرتك مفهومة للآخرين.