Python Data Structures: Biological Examples (in Hebrew)
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
חדש והחלפתו ברשימה.