קבוצות ב-Python — אוסף עוצמתי שכל מפתח צריך להשתמש בו

קבוצות ב-Python — אוסף עוצמתי שכל מפתח צריך להשתמש בו

  • ולריה איינבינדר
  • תוכנה
  • 10 Sep, 2024

הקדמה

ישנם שלושה אוספי Python בסיסיים: רשימה (list), מילון (dictionary), וקבוצה (set). בעוד ש-רשימה ו-מילון נפוצים מאוד בשימוש כמעט בכל קוד Python, ה-קבוצה לפעמים מרגישה קצת פחות מוערכת, למרות שהיא לא צריכה להיות כזאת!

קבוצה ב-Python היא אוסף שימושי במיוחד שמאפשר לכם לכתוב קוד מאוד יעיל ואלגנטי בזכות התכונות והפונקציונליות המיוחדות שלה.

שליטה בקבוצות תשפר משמעותית את הקוד שלכם ותקצר את זמן הפיתוח. אז בואו נצלול לעומק ל-קבוצות ב-Python ללא עיכובים נוספים!

אתם מוזמנים לצפות בסרטון שלי על קבוצות ב-Python עם דוגמאות קוד להבנה טובה יותר.

נתחיל במשימה מניעה: איך מקבלים ערכים ייחודיים מתוך רשימה שעשויה להכיל כפילויות?

באמצעות קבוצה ב-Python, אפשר לעשות זאת בשורת קוד אחת על ידי יצירת קבוצה מתוך ה-רשימה הנתונה:

python set you can do it with a single line of code! Just create a set from the given list

שימו לב שעכשיו הקבוצה שלנו unique_names אינה מכילה כפילויות. זה מדגים את אחת משתי התכונות העיקריות של קבוצה:

האלמנטים בקבוצה הם ייחודיים.

בואו נדון בשתי התכונות העיקריות של הקבוצה בפירוט רב יותר.

תכונות של קבוצה

קבוצות מיישמות שתי תכונות עיקריות שמבדילות אותן באופן משמעותי מרשימות:

  • האלמנטים בקבוצה הם ייחודיים
  • האלמנטים בקבוצה אינם מסודרים

במבט ראשון, זה עשוי להיראות מוזר — למה להשתמש באוסף שלא תומך בסדר ושאינו מאפשר כפילויות כאשר יש לנו רשימות שאין להן את המגבלות הללו?

התשובה היא שאלה אינן מגבלות, אלא תכונות חשובות שיכולות למנוע באגים פוטנציאליים ולאפשר פונקציונליות ייחודית. בואו נבחן כמה דוגמאות.

דוגמה 1: ערים שאירחו את האולימפיאדה

נניח שאתם רוצים לשמור את כל הערים שאי פעם אירחו את המשחקים האולימפיים. זה הגיוני מאוד להשתמש ב-קבוצה במקום רשימה:

  • אתם רוצים שכל עיר תופיע רק פעם אחת, גם אם היא אירחה מספר פעמים.
  • אין צורך בסדר, שכן אין דירוג פנימי בין הערים.

דוגמה 2: פירות שגדלים בישראל

אתם רוצים לשמור את כל הפירות שגדלים בישראל. אותם עקרונות חלים גם כאן:

  • אינכם רוצים כפילויות באוסף הפירות שלכם.
  • אין צורך בסדר מסוים.

כעת, בואו נראה כיצד תכונות אלו מיושמות בקבוצות.

ייחודיות

בקוד הבא, יש לנו רשימה של חודשי גשם בישראל בשלוש השנים האחרונות. מכיוון שישנם חודשי חורף שחוזרים על עצמם, יש כפילויות ב-rainy_months_list.

אם נרצה לקבל קבוצה ייחודית של חודשי גשם בישראל, כל מה שעלינו לעשות הוא ליצור קבוצה מתוך rainy_months_list:

Python code to demonstrate uniqueness of elements in set

ה-קבוצה מסירה אוטומטית את כל הכפילויות מהאוסף ההתחלתי. בנוסף, קבוצות שומרות על ייחודיות בכך שהן מונעות הוספת כפילויות. בקוד הבא, אתם יכולים לראות ניסיון להוסיף אלמנט כפול ל-קבוצה, אך היא נשארת ללא שינוי:

Python code — it is impossible to add duplicates to set

היעדר סדר

מכיוון ש-קבוצות אינן תומכות בסדר, ניסיון לגשת לאלמנט במיקום ספציפי יגרום לשגיאה:

Python code — set does not support indexing

עם זאת, אנו יכולים לאתר את האלמנטים בקבוצה כמו בכל אוסף אחר, אך סדר האלמנטים במהלך האיתור אינו מובטח ויכול להשתנות:

Python code — iteration over set

פונקציונליות מיוחדת של קבוצה

כעת, לאחר שדיברנו על תכונות של קבוצה, בואו נבחן כמה פונקציות עוצמתיות ש-קבוצות ב-Python מיישמות:

  1. חיתוך (Intersection)
  2. איחוד (Union)
  3. הפרש (Difference)

אם אתם מכירים את תורת הקבוצות, אלו בדיוק הפעולות המוגדרות שם. אם לא, הדיאגרמה הזו תעזור לכם להבין אותן:

Intersection, Union and Difference

בואו נראה את הפעולות האלו בפעולה עם כמה דוגמאות קוד. תחילה, ניצור שלוש קבוצות לעבוד איתן:

Create 3 sets. Python.

  • weekdays מכילה את כל שבעת ימי השבוע.
  • sport_days מייצגת את הימים בהם אני מתאמנת.
  • lecture_days הם הימים בהם אני מלמדת.

אנו נשתמש בפעולות קבוצה כדי לקבל תובנות מתוך הקבוצות הללו.

חיתוך

מהם הימים בהם אני מלמדת בבוקר וגם מתאמנת בערב?

כדי לענות על כך, עלינו למצוא אלמנטים שמשותפים גם ל-sport_days וגם ל-lecture_days, כלומר החיתוך של הקבוצות. אפשר לעשות זאת בשורת קוד אחת באמצעות המתודה intersection:

Intersection example. Python.

איחוד

באילו ימים יש לי משהו בלוח הזמנים שלי (כלומר, מה הם הימים העמוסים שלי)?

אלו הם הימים שמופיעים או ב-sport_days או ב-lecture_days, מה שמתאים להגדרה של איחוד. נשמור את הימים הללו כ-busy_days:

Union example. Python.

הפרש

אני מתכנת טיול חד-יומי עם חברים. באילו ימים אני פנויה לחלוטין?

הימים הפנויים הם ה-הפרש בין weekdays לבין busy_days — ימים שמופיעים ב-weekdays אך לא מופיעים ב-busy_days:

Difference example. Python.

סיכום

מזל טוב! הוספתם כלי עוצמתי לארגז הכלים שלכם ב-Python!

כעת הגיע הזמן ליישם את מה שלמדתם. חשבו על הפרויקטים האחרונים שלכם ב-Python. האם היו נתונים עם תכונות של קבוצה אך מומשו באמצעות רשימות או אוספים אחרים? אם כן, נסו לכתוב מחדש את הקוד כך שישתמש ב-קבוצות כשמתאים.


אתם יכולים למצוא את כל הקוד שהוצג כאן ב-GitHub שלי.

תודה על הקריאה!

תגיות :
שתף :

פוסט קשור

דקורטורים בפייתון - צלילה עמוקה ב-2 חלקים (1/2)

דקורטורים בפייתון - צלילה עמוקה ב-2 חלקים (1/2)

  • ולריה איינבינדר
  • תוכנה
  • 12 ביולי 2024

מבוא סדרת 2 חלקים זו:חלק 1 (נוכחי): הקדמה + כתיבת דקורטור ראשון חלק 2: [דקורטורים לפונקציות שמקבלות פרמטרים ומחזירות ערכים, דקורטורים שמקבלים ארגומנטים, דקורטורים במחלקות + תרגיל

קרא עוד
דקורטורים בפייתון - צלילה לעומק ב-2 חלקים (2/2)

דקורטורים בפייתון - צלילה לעומק ב-2 חלקים (2/2)

  • ולריה איינבינדר
  • תוכנה
  • 17 ביולי 2024

זהו סדרה בת 2 חלקים:חלק 1: מבוא + יצירת הדקורטור הראשון שלך חלק 2 (נוכחי): דקורטורים לפונקציות שמקבלות פרמטרים ומחזירות ערכים, דקורטורים

קרא עוד
גיליון פקודות ניהול Django

גיליון פקודות ניהול Django

  • ולריה איינבינדר
  • תוכנה
  • 12 באוג׳ 2024

התקנות כדי להתחיל עם Django, כל מה שצריך לעשות הוא להתקין את חבילת Django באמצעות pip: pip install djangoלאחר שההתקנה הושלמה, ניתן להמשיך וליצור את יישום ה-Django שלכם. יצירת יישום

קרא עוד
Google Colab - כלי חובה למפתחים ו-Data Scientists

Google Colab - כלי חובה למפתחים ו-Data Scientists

13 פיצ'רים וטיפים שימושייםמה זה Google Colab?Colaboratory, או בקיצור "Colab", הוא מוצר של Google Research. כלי זה מאפשר לכל אחד לכתוב ולהריץ קוד

קרא עוד
Python Regular Expressions - דף עזר

Python Regular Expressions - דף עזר

  • ולריה איינבינדר
  • תכנות
  • 16 באוק׳ 2024

דוגמאות קוד רבות + טיפים שימושיים. בונוס נוסף בסוף הפוסט.Regular Expressions הם כלי שימושי ביותר, וכמו כל מפתח, אני משתמשת בהם הרבה בעבודה עם טקסטים. מכיוון שאני תמיד שוכחת את תחביר הביטויים ה

קרא עוד