מבני נתונים בפייתון
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חדש והחלפתו ברשימה.