
list.sort() מסדרת את הרשימה עצמה, ומחזירה None. לכן a = lst.sort() נותן None ולא רשימה.sorted() מחזירה רשימה חדשה ממוינת, והרשימה המקורית נשארת כמו שהייתה.reverse, שמסדר בסדר הפוך, ו-key. ב-Python 2 היה גם פרמטר cmp.lower() בתוך ה-key.lst.sort(reverse=True)sorted(persons, key=lambda p: p.name)sorted(persons, key=lambda p: p.name.lower())for x in lst.sort() ומקבלים שגיאה, כי sort מחזיר None.lower() מציב אותיות גדולות לפני קטנות.הטקסט המלא של הדקות הראשונות בהרצאה «sorting» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בשיעור הזה נדבר על מיון, איך ממיינים דברים בפיידון, סורטינג. אז בואו נתחיל באמת מהדבר הכי פשוט, נגדיר איזשהו ליסט שיש בו את המספרים של 1 עד 10. עכשיו, כמובן שהרשימה הזאת כבר ממוינת, אז אנחנו גם נעשה לה שפלינג, כלומר אנחנו נערבב אותה.
כדי לעשות את זה אנחנו נשתמש במודול רנדום, יש שם פונקציה שנקראת שפל. עכשיו שימו לב ששאפל זאת פונקציה שמחזירה נאן והיא עושה את המיון אין פלייס.
אז בואו רגע נדפיס רק את lst ונוכיח לכם באמת שזה לא בסדר שיצרנו את זה. אוקיי, עכשיו איך אני ממיין את הדבר הזה? אז יש לי שתי פונקציות בפייתון שעושות מיון, זו פונקציה על הליסט והפונקציה השנייה זו פונקציה שהיא גלובלית שאפשר לקרוא לה.
אז בואו נתחיל בפונקציה שהיא בתוך הליסט, יש לנו print lst.sort ועל הפרמטרים האלה נדבר עוד רגע. שימו לב שקיבלנו none, למה קיבלנו none?
כמו שאמרתי הפונקציה הזאת היא עושה את המיון in place וזה אחד הדברים שאנשים נופלים בו, שימו לב עכשיו, עכשיו המספרים ממויינים, זאת אומרת הדבר הזה אם אני עושה a שווה ל-list.sort ואחרי זה אני עושה איזושהי לולאה לדבר הזה אז אני אעוף כי זה בעצם שווה ל-none, חשוב מאוד לשים לב לדבר הזה.
אם בכל זאת נרצה לכתוב for משהו in sort, בשביל זה יש לנו את הפונקציה sorted. הפונקציה הזאת מחזירה את הערך ממוין. למה אני מתכוון? print sorted של lst.
פה אנחנו רואים שהפונקציה הזאת מחזירה את הליסט ממוין. שימו לב אבל שהליסט עצמו נשאר עדיין לא ממוין.
אז יש לנו פה שתי פונקציות, חשוב לשים לב להבדלים ביניהם. עכשיו, מבחינת יעילות ברור שעדיף למיין in place, ולפעמים אתה כן רוצה ליצור העתק של הליסט שלך, ולכן כן אפשר להשתמש בסורטד.
לפעמים לא באמת אכפת לנו, כי זה סך הכל איזשהו סקריפט זריז, חשוב לדעת מה עושים ואיך לעשות את זה כמו שצריך שזה שלא נעוף.
בואו נסתכל רגע על הפונקציה ליסט או סורטד, שתיהן דרך אגב מקבלות את אותם פרמטרים. בואו נראה איזה פרמטרים יש לנו. פונקציה זאת יכולה לקבל שלוש דברים פרמטר בשם cmp, מפרמטר בשם key ופרמטר בשם reverse בואו נתחיל לדבר על reverse reverse מה שהיא עושה היא ממיינת הפוך מה זאת
אומרת אם reverse שווה false המספר 0 יהיה ראשון והמספר 9 יהיה אחרון האות a תהיה ראשונה והאות z תהיה אחרונה במקרה של דמיון של אותיות לעומת זאת אם reverse יהיה true נראה את הדברים הפוכים בואו נראה דוגמה שימו
אני חושב שעכשיו קיבלנו את המספרים מ-9 עד 0. כלומר, זה הסדר של המיון, עולה או יורד. מה בנוגע ל-CMP ול-Key? אז CMP זה משהו שאנחנו, מי שמכיר Java ושפות תכנות נוספות, הדבר הזה נקרא קומפרטור.
מה זאת אומרת? זאת פונקציה שאנחנו מעבירים לפונקציה Sort, שהיא מקבלת, החתימה שלה צריכה להיות ככה, שלה נגיד CMP, זה לא באמת משנה, היא מקבלת שני מספרים, והיא צריכה להחזיר מי מהם גדול יותר.
למשל, אם זה מספרים היא יכולה פשוט להחזיר return A קטן מ-B. אבל אם זה משהו קצת יותר מורכב כמו קלאס, אז היא תצטרך לעשות קצת יותר עבודה.
אז בואו באמת נדבר עכשיו על מיון של משהו קצת יותר מסובך ממספרים או תווים שלצורך העניין זה אותו דבר. בואו נגדיר איזשהו קלאס של person שיורש מ-object,