PracticU

map & filter

בלי כתוביותעם כתוביות
PracticU › קורס פייתון - Python › map & filter
מילון מושגים:
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
Lambda - פונקציה קצרה ואנונימית בקוד. גם שירות של AWS להרצת קוד בענן בלי לנהל שרתים.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.

map & filter
בשיעור נלמד את הפונקציות map ו-filter בפייתון, ואיך משתמשים בהן יחד עם lambda כדי לעבד רשימות.
השלבים העיקריים
1. filter: הפונקציה מקבלת פונקציה ורצף, ומחזירה רק את הערכים שעבורם הפונקציה מחזירה True. לדוגמה, מהמספרים 1 עד 10 נשארים רק הגדולים מ-5.
2. filter עם lambda: במקום להגדיר פונקציה נפרדת כותבים את התנאי ישירות, למשל lambda x: x > 5.
3. תנאי מורכב: אפשר לשלב תנאים עם and, למשל מספרים גדולים מ-5 שהם זוגיים, לפי שארית החלוקה ב-2.
4. map: הפונקציה מפעילה פונקציה על כל איבר ברצף, ומחזירה רצף חדש עם התוצאות. לדוגמה, הוספת 5 לכל מספר מ-0 עד 9, או העלאה לחזקה 5.
5. map על שני רצפים: אפשר להעביר שני רצפים ופונקציה עם שני פרמטרים, למשל סכום של איברים מאותו מקום בשני הרצפים. הרצפים חייבים להיות באותו אורך.
6. חלופה ברשימה: אותו תוצאה מתקבלת עם list comprehension, שכתוב בשורה אחת. פייתון דוחפת לכיוון הזה, אבל גם map ו-filter מקובלים.
פקודות והגדרות
- filter(lambda x: x > 5, lst)
- map(lambda x: x + 5, range(10))
- [x for x in range(10) if x > 5 and x % 2 == 0] כחלופה ל-filter
טעויות נפוצות
- ב-map על שני רצפים, אם האורכים שונים, הפעולה נכשלת על האיבר שחסר באחד הרצפים.
- אם הביטוי ב-lambda מורכב מדי, עדיף פונקציה עם שם, כדי שהקוד יישאר קריא.
שימו לב
filter שומר על ערכים לפי תנאי, map משנה כל ערך, ושניהם מתאימים בדיוק לרשימה שמעובדת בשורה אחת.
השיעור הבא בקורס: sorting

פרקי ההרצאה: map & filter

  1. 00:00

    הפונקציה filter וסינון רשימה

  2. 00:42

    העברת פונקציה לתוך filter

  3. 01:43

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

  4. 02:23

    סינון מספרים זוגיים עם filter ו-lambda

  5. 03:49

    השוואה לבין List Comprehension

  6. 04:41

    איזו צורה יעילה יותר בפועל

תמלול ההרצאה: map & filter

הטקסט המלא של הדקות הראשונות בהרצאה «map & filter» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

    שלום לכולם, בשיעור הזה נדבר על הפונקציות map ופילטר פייתון. אז נתחיל עם הפונקציה פילטר. נגיד שיש לנו איזשהו ליסט שיש בתוכו מספרים מ-1 עד 10, ואני רוצה עכשיו לקבל את הליסט, ליסט חדש, יש בו את כל המספרים שהם קטנים מ-5.

  2. 00:31

    אז דרך אחת לעשות את זה זה עם הפונקציה, זה עם הפונקציה פילטר. נעשה b שווה לפילטר. הפילטר מקבלת שתי דברים, מקבלת, הפרמטר הראשון שהיא מקבלת זה function והפרמטר השני שהיא מקבלת זה sequence, רצף.

  3. 00:51

    בואו נתחיל מהדבר הפשוט, נגדיר פה פונקציה, נקרא לה a שמקבלת x והיא, כל מה שהיא עושה זה return x גדול מ-5, פה נשים את a, פה נשים את b ונשנה את זה ל-st שזה יהיה קצת יותר, ובואו נראה מה אנחנו מקבלים עכשיו.

  4. 01:29

    אוקיי, עכשיו במקרה הזה זה מאוד קל לראות מה קורה פה כי יש לנו את קריאה ל-a ו-a נמצאת ממש פה מעל אבל זה לא חייב להיות המקרה יכול להיות ש-a נמצאת בקובץ אחר עכשיו אם זה המצב זה יהיה מאוד עצוב כי a היא סך הכל פונקציה ממש פשוטה שכל מה שהיא עושה זה פשוט מחזירה x גדול מ-5 כלומר היא מחזירה true

  5. 01:53

    עבור כל ה-x שהם גדולים מ-5 אז מה שפייתון מאפשרת לנו לעשות זה במקום לעשות פה a אלא פשוט לכתוב למדה x אז x גדול מחמש קיבלנו אותו דבר כלומר לא צריך בכלל להגדיר את a אפשר למחוק אותה בוא נראה עוד איזה שהיא דוגמה יותר מתוחכמת לפילטר בוא נגיד שיש לנו עוד פעם דברים של דברים מ-1 עד

  6. 02:37

    10 ואנחנו רוצים להחזיר רק את המספרים הזוגיים שגדולים מחמש כל מה שצריך לעשות זה לעשות פילטר למדה x גדול מ-5 and x מודולו 2 שווה שווה 0 ופה לתת לו את הרצף של lst וקיבלנו המורכבות של הלמדה היא מוגבלת יחסית ואפשר להכיל רק ביטוי אחד כמובן שאפשר לתת פה גם דוגמה לפונקציה הרבה יותר מורכבת ולהגדיר את הפונקציה בצורה חיצונית ואז לא תהיה

  7. 03:35

    שום בעיה פשוט הקוד יהיה טיפה פחות קריא כי נצטרך כל פעם צריך לקפוץ לפונקציה ולהבין מה היא עושה עכשיו עכשיו, הדבר הזה, מי שיתקל, זה יזכיר לו List Comprehensions.

  8. 03:49

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

  9. 03:58

    X for X in range 10 if, ואז פשוט להעתיק את התנאי הזה. באנו ב-One Liner, בשורה אחת, באנו את כל הדבר הזה.

  10. 04:28

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

לקורס המלא: קורס פייתון אונליין למתחילים

ההרצאה הקודמת: lambda

ההרצאה הבאה: sorting

הרצאות קשורות מקורסים אחרים

  • Angular 4 - Filter and Pipe
  • הסבר על Google Map - API
  • Google API - Static Map
  • יצירת Pass-Through Filter

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס PHP - פרויקט מעשי