PracticU

list comprehension

בלי כתוביותעם כתוביות
PracticU › קורס פייתון - Python › list comprehension
מילון מושגים:
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
תחביר - אוסף הכללים של שפת תכנות הקובעים כיצד לכתוב קוד תקין. הפרתם גורמת לשגיאת תחביר.
Python - שפת תכנות עילית וקריאה, נפוצה בפיתוח, אוטומציה, ניתוח נתונים ולמידת מכונה.

list comprehension
השיעור מציג את list comprehension, דרך קצרה לכתוב לולאות for שמייצרות רשימה, וכן את הגרסה של dict comprehension.
השלבים העיקריים
1. הצורה הבסיסית: [x + 2 for x in l] יוצר רשימה חדשה שבה כל איבר ברשימה המקורית גדל ב-2. במקום לולאה, הוספה ושתי שורות, יש שורה אחת.
2. סינון: מוסיפים תנאי בסוף הביטוי, למשל if x % 2 == 0, ואז נשמרים רק הערכים הזוגיים.
3. לולאה כפולה: [x + y for x in a for y in b] יוצר זוגות מכל שילוב של איבר מ-a ואיבר מ-b. אפשר להוסיף תנאים בין הלולאות.
4. dict comprehension: יוצרים מילון באותה צורה, בסוגריים מסולסלים, ומשתמשים ב-items() כדי לעבור על זוגות מפתח-ערך. בדוגמה מתהפכים המפתחות והערכים.
5. תאימות גרסאות: בפייתון 2.6 אין dict comprehension בסוגריים מסולסלים, ולכן כותבים dict(...) עם הביטוי בתוכו. בפייתון 2.7 הסינטקס בסוגריים מסולסלים נתמך.
שימו לב
list comprehension רץ מהר יותר מלולאה רגילה, כי פייתון מבצעת לו אופטימיזציה. מומלץ להימנע משתי לולאות ומעלה באותו ביטוי, כי הקוד נעשה קשה לקריאה.
זהו כלי חשוב לכתיבת קוד Python תמציתי וקריא.
השיעור הבא בקורס: פייטון Object Oriented - חלק 1

פרקי ההרצאה: list comprehension

  1. 00:00

    מבוא: list comprehension ומה זה

  2. 00:49

    יצירת רשימה חדשה עם חישוב לכל איבר

  3. 02:30

    השוואה ללולאת for רגילה

  4. 03:26

    סינון איברים עם תנאי if

  5. 04:07

    סינון עם כמה תנאים באמצעות and

  6. 05:07

    list comprehension עם שתי לולאות

  7. 06:33

    הרחבה לכמה לולאות ותוצאה קריאה

תמלול ההרצאה: list comprehension

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

  1. 00:03

    עכשיו אני אדבר קצת על דברים מורכבים בליסט. בעצם הדבר העיקרי שאני אדבר עליו זה ליסט קומפריאנצ'ן. מה זה ליסט קומפריאנצ'ן? זה דרך קצרה לכתוב לולאות for.

  2. 00:17

    ובואו נתחיל בדוגמה קצרה. נגיד יש לי איזשהו תעדיף באינטראקטיב של. נגיד יש לי איזשהו ליסט ששווה לערכים 1, 1, 2, 3. אני מוכתוב פה l שווה. אני מוציא 1, 2, 3, 4.

  3. 00:43

    עכשיו אני רוצה לעשות ליסט חדש שמכיל בתוכו, נתחיל בדוגמה הכי פשוטה, את כל הערכים שב-L פלוס 2. מה זאת אומרת? אז אני אומר L2 שווה ל-X, 4X in L, ולא X, אני רוצה ל-X ועוד 2.

  4. 01:07

    ובואו נוסיף פה הדפסה של L2 ואחרי זה נסביר את הסינטקס המעניין הזה. אוקיי, אז מה יש לנו פה? אנחנו בעצם, דבר ראשון הגדרנו ליסט שנקרא L, אתם מכירים בתוכו את המספרים 1 עד 4, יכולנו גם לעשות ככה דרך אגב.

  5. 01:32

    אני אתן פה תתן אותו דבר. ואז אני אומר ככה, יש לי את x. מי זה x? x זה כל x שנמצא ב-l. מה זה l?

  6. 01:48

    l זה הרשימה שהגדרתי פה. אז אני בעצם אומר, יש לי פה סוגריים, זה אומר שאני רוצה ליצור ליסט חדש. אני רוצה שתיצור לי ליסט חדש, שכל ערך בתוכו יהיה שווה ל-x ועוד 2, עבור כל x שנמצא ב-l.

  7. 02:06

    עכשיו, יכולתי גם לכתוב פה x כפול 2, זה היה עובד אותו דבר, וגם x בחזקת 2, זה היה עובד אותו דבר בדיוק. עכשיו, מה מיוחד?

  8. 02:19

    כלומר, הדבר הזה, אם הייתי רוצה לכתוב את זה בצורה יותר ארוכה, הייתי כותב ככה: for x in l, הייתי כותב ככה: l2 שווה ד"ש, ואז הייתי עושה l2 נקודה band l ועוד 2, פועל בחזקת שתיים, ואז הייתי בעצם מקבל אותו דבר, אבל זה היה לי שתי שורות במקום שורה אחת.

  9. 02:50

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

  10. 03:01

    ברגע שמשהו הוא list comprehension, אני יכול להוסיף לכם פה טיימינג ודברים כאלה, אבל תסמכו עליי שהקוד רץ יותר מהר. יותר מזה, ברגע שמתרגלים אליו, וזה לא כל כך קשה להתרגל אליו, הקוד הוא הרבה יותר קריא הוא קצר עכשיו בוא נראה קצת ליסט קומפריאנצ'ן יותר מתקדם בוא

  11. 03:21

    נעשה שזה שווה לרנג' 20 עכשיו בוא נגיד שאני רוצה ליצור ליסט חדש שמכיל רק את המספרים הזוגיים שנמצאים ב-l נעשה l2 שווה x for x in l if x מודול הוא 2 שווה שווה 0 בוא נעשה קצת ספייסים בוא נריץ את זה בעצם מה יש לנו פה אנחנו אומרים ככה תיצור לי ליסט בליסט הזה יהיה את ה-x מה זה x?

  12. 03:56

    x זה כל x שנמצא ב-l, אבל רק אם x מודול הוא 2 שווה שווה 0. כלומר, אם x חלקי 2 שווה 0, כלומר, רק אם x הוא זוגי. באמת שקיבלנו פה את כל המספרים הזוגיים בין 0 עד 19.

  13. 04:14

    עכשיו, היינו גם יכולים לעשות and x מודול הוא 3 שווה שווה 0, וזה היה מביא לנו את כל המספרים שמתחלקים ב-2 וב-3.

  14. 04:28

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

  15. 04:37

    יכולנו גם לעשות כל החזקות, כל הריבועים של המספרים שמתחלקים ב-2 וב-3, וזה גם היה עובד לא רע בכלל, אפילו די טוב. עכשיו בואו נעשה משהו קצת יותר מתקדם. לולאת list comprehension כפול, בואו נעשה ככה x פלוס y for x in a,b,c,d, for y in a,b,c,d.

  16. 05:31

    נעשה לזה פרינט, בואו נראה מה קיבלנו. נעיף שתי דבר הזה. בעצם קיבלנו פה זוג, זוג סדור מכל חיבור של הליסטים האלה. כלומר, אני אמרתי, תיצור לי ליסט חדש שמכיל חיבור של x ועוד y, כאשר x הוא כל תו שמופיע בסטרינג a,b,c,d, ו-Y הוא תו שמופיע ב-ABCD קטן.

  17. 06:01

    אז קיבלנו A גדול A קטן, אחרי זה קיבלנו A גדול B קטן, A גדול C קטן. בעצם אם אני אכתוב את הדבר הזה בתור לולאה ארוכה, אז זה היה נראה ככה:

  18. 06:16

    4X in A ABCD, 4Y in ABCD, פרינט X ועוד Y. שימו לב שבמקום שלוש שורות, קיבלתי פה שורה אחת בקוד די קריא, הוא די מובן. עכשיו אפשר גם לעשות ועוד Z ועוד W ועוד, לא חייב להיות X ו-Y דרך אגב, זה סתם מספרים, סתם משהו שיכולתי גם לכתוב פה T וגם לשנות, אבל גם בידי צריך לשנות ל-T, וזה היה עובד.

  19. 06:52

    הקוד פה הרבה יותר קריא,

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

ההרצאה הקודמת: הסבר על namedtuple

ההרצאה הבאה: פייטון Object Oriented - חלק 1

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

  • List Dialog
  • פקדי רשימה - List
  • רשימות - List - SharePoint
  • הצגת רשימה - React List

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

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