שיעורי מודול (4/4)
סטים
סט הוא אוסף של אלמנטים ייחודיים, לא מסודרים. שלוש כוחות על:
- ביטול כפילויות אוטומטי: להוספת אותו אלמנט פעמיים אין השפעה.
- מבחן החברות ב-O(1):
x in sמהיר במיוחד אפילו עם מיליונים של אלמנטים (זה מבוסס hash, כמו dicts). - פעולות סט: איחוד, צומת, הבדל, הבדל סימטרי.
יצירת סט
vuoto = set() # ATTENZIONE: {} è un dict vuoto, non un set!
numeri = {1, 2, 3}
da_lista = set([1, 1, 2, 3, 3, 3]) # {1, 2, 3}סוגרים לבד {} יוצרים מילון ריק, לא קבוצה: עבור קבוצה ריקה
אתה צריך set().
שינוי סט
s = {1, 2, 3}
s.add(4) # {1, 2, 3, 4}
s.add(1) # nessun effetto (già presente)
s.discard(99) # rimuove se presente, silenzioso altrimenti
s.remove(2) # rimuove o solleva KeyErrorהגדר פעולות
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
a | b # {1, 2, 3, 4, 5, 6} unione
a & b # {3, 4} intersezione
a - b # {1, 2} differenza (in a ma non in b)
a ^ b # {1, 2, 5, 6} differenza simmetrica (xor)ישנם גם טפסי שיטה (a.union(b), a.intersection(b), ...) אשר ב
בנוסף קבל כל איטרציה, לא רק סטים.
מבחן חברות
parole = {"ciao", "mondo", "python"}
"ciao" in parole # True O(1)
"java" not in parole # Trueלשם השוואה: חיפוש עם in בתוך list הוא O(n) ובארוך
רשימות זה הרבה יותר איטי.
סט קפוא: הגרסה הבלתי ניתנת לשינוי
frozenset({1, 2, 3}) היא הגרסה הניתנת לגיבוש: היא יכולה להיות מקש dict או
אלמנט של סט אחר.
הגדר פעולות וביצועים
סטים מיושמים כטבלאות גיבוב, מה שהופך את בדיקת החברות (x in my_set) למהירה ביותר: היא פועלת בזמן קבוע O(1), בניגוד לרשימות שבהן החיפוש לוקח זמן ליניארי O(n). בנוסף, הם תומכים בפעולות אלגבריות כמו איחוד (|), צומת (&) והפרש (-).
נסה את זה
בהינתן הרשימה `nums = [1, 2, 2, 3, 3, 3, 4]`, בנה `unique_items` עם הערכים הייחודיים (בכל סדר) ולאחר מכן חשב את `count' בתור len(unique_items). הערך 'ספירה'.
הצג רמז
set(nums) מסיר כפילויות.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
בהינתן `a = {1, 2, 3, 4}` ו-`b = {3, 4, 5, 6}`, חשב את הצומת ל`פריטים_נפוצים` ואת ההפרש a-b ל`רק_a`. הערך את הטפול `(פריטים נפוצים, רק_א)`.
הצג רמז
& צומת, - הבדל.
הפתרון זמין לאחר 3 ניסיונות
אתגר נוסף
Given two sets `set_a = {1, 2, 3}` and `set_b = {2, 3, 4}`, calculate the mathematical intersection of the two sets (their common elements). Store the resulting set in `common_elements` and evaluate it.
הצג רמז
אתה יכול להשתמש באופרטור & או בשיטת set_a.intersection(set_b).
הפתרון זמין לאחר 3 ניסיונות