מבני נתונים בפייתון
yuval bloch
🔬 תרגול במבני נתונים
במשימות הבאות תתרגלו שימוש במבני הנתונים שלמדתם — רשימות, קבוצות, מילונים וזוגות — בהקשר של מחקר אקולוגי.
🐾 חלק 1: רשימות, קבוצות וגיוון ביולוגי
במהלך סקר טבע באזור מדברי תיעדתם את כל בעלי החיים שנצפו, לפי סדר ההיתקלות:
["porcupine", "gazelle", "spiny mouse", "golden jackal", "ibis", "lizard", "gazelle", "rock hyrax", "spiny mouse", "green toad", "ibis", "jackal", "fox", "Megabat", "Megabat", "lizard", "ibis"]
משימות:
-
צרו רשימה בשם
animalsשמכילה את כל בעלי החיים לפי סדר התיעוד. -
הדפיסו את הרשימה וודאו שהיא מוצגת כראוי.
-
תיקון טעות בזיהוי: העטלף הראשון הוא בעצם
"Microbat"ולא"Megabat".
השתמשו ב־()indexכדי לאתר ולתקן את הטעות. -
חשבו את השכיחות היחסית של
"ibis"— כלומר, כמה פעמים הוא מופיע חלקי אורך הרשימה. -
כמה מינים שונים נצפו? צרו
setמתוך הרשימה כדי לבדוק אילו מינים הופיעו לפחות פעם אחת.
בסקר שנערך בבית גידול נוסף, נמצאו המינים הבאים:
["sand cat", "desert hedgehog", "rock hyrax", "spiny mouse", "golden jackal", "lizard", "sand cat", "green toad", "golden jackal", "fox", "ibex", "spiny mouse"]
-
כמה מינים מופיעים ברשימה החדשה? השתמשו ב־
setכדי לבדוק. -
כמה מינים משותפים לשני בתי הגידול?
-
כמה מינים ייחודיים קיימים בסך הכול (בשני האתרים יחד)?
-
אילו מינים נמצאים בבית הגידול הראשון אך לא בשני?
-
מגוון בטא מבטא את השוני בין שני בתי גידול, ומחושב לפי הנוסחה: $$ 1- \frac{a}{a + b + c} $$
כאשר:
-
a: מספר המינים המשותפים לשני האתרים
-
b: מספר המינים הייחודיים לאתר הראשון
-
c: מספר המינים הייחודיים לאתר השני
חשבו את מגוון הבטא בין שני בתי הגידול לפי נוסחה זו.
-
🐜 חלק 2: חרקים לפי בתי גידול (שימוש במילונים)
במהלך סקר נוסף תיעדתם את תפוצת החרקים בשלושה סוגים של בתי גידול:
📍 under_tree:
{
"ants": 23,
"beetles": 5,
"grasshoppers": 2,
"stick insect": 1
}
📍 in_bush:
{
"ants": 12,
"beetles": 8,
"grasshoppers": 7,
"butterflies": 5,
"leafhoppers": 2
}
📍 open_area:
{
"ants": 5,
"grasshoppers": 15,
"butterflies": 10,
"dragonflies": 4
}
משימות:
-
צרו
dictionaryנפרד עבור כל בית גידול, כאשר המפתח הוא שם החרק והערך הוא מספר התצפיות. -
צרו מילון מקונן בשם
all_habitatכאשר המפתחות הם בתי הגידול השונים והערכים הם המילונים שיצרתם .
ודאו שהשורה הבאה מחזירה 5:all_habitat["open_area"]["ants"] -
חשבו את השכיחות היחסית של
"grasshoppers"בבית הגידולopen_area.
רמז: השתמשו ב־()valuesוב־()sumכדי לחשב את סך כל התצפיות באותו בית גידול. -
כמה מינים שונים יש בכלל בתי הגידול? השתמשו ב־
setו־()unionכדי לבדוק.
🌸 חלק 3: רשת האבקה — שימוש בזוגות (tuples)
במחקר נוסף תיעדתם אילו חרקים מאביקים אילו פרחים:
🐝 bees
-
Sunflower
-
Lavender
-
Clover
🦋 butterflies
-
Lavender
-
Zinnia
-
Milkweed
🪰 hoverflies
-
Clover
-
Yarrow
-
Daisy
משימות:
-
צרו רשימה בשם
pollinationשל זוגות (tuples), כאשר כל זוג מייצג קשר בין חרק לפרח.
לדוגמה:("bees", "Sunflower") -
בדקו האם
"butterflies"מאביקים את"Clover"באמצעות הביטוי: -
נסו לשנות את הקשר הראשון של
"bees"מ־"Sunflower"ל־"Rose"כך:pollination[0][1] = "Rose"⚠️ הסבירו מדוע זה לא עובד — מה ההבדל בין
tupleל־list? -
תקנו את הערך על ידי יצירת
tupleחדש והחלפתו ברשימה.