כיצד לשרשר רשימות בפייתון

Kyzd Lsrsr Rsymwt Bpyytwn



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

דוגמה 1: שרשור רשימות עם אופרטור '+'.

אנו יכולים להשתמש באופרטור '+' ב- Python כדי לשרשר את הרשימות. באמצעות האופרטור '+', אתה יכול להצטרף לשתי רשימות או יותר כדי ליצור רשימה חדשה. כאשר אתה משתמש באופרטור '+' עם רשימות, נוצרת רשימה חדשה והרכיבים של הרשימות המקוריות מועתקים לרשימה החדשה לפי סדר הופעתם.

הנה דוגמה פשוטה:







גיליון 1 = [ 1 , 2 , 3 ]

רשימה 2 = [ 4 , 5 , 6 ]

תוצאות_רשימת = רשימה1 + רשימה2

הדפס ( תוצאות_רשימת )

יש לנו שתי רשימות באיור זה: 'רשימה1' ו-'רשימה2'. אנו משתמשים באופרטור '+' כדי לשלב אותם ברשימה אחת. בשימוש עם רשימות, האופרטור '+' משרשר אותן, מה שאומר שהוא מצטרף לאלמנטים של הרשימה השנייה לסוף הראשונה. אז, לאחר ביצוע ה-'result_list = list1 + list2', ה-'result_list' יכיל את הרכיבים של 'list1' ו-'list2' גם בסדר שבו הם היו משורשרים.





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





דוגמה 2: שימוש בשיטת Extend()

ניתן להוסיף את הפריטים של איטרבל לסוף רשימה קיימת באמצעות שיטת extend() . זה משנה את הרשימה המקורית במקום, בניגוד לאופרטור '+' שיוצר רשימה חדשה.

נניח שיש לנו רשימה של תלמידים בכיתה, ואנו רוצים להרחיב את הרשימה הזו על ידי הוספת השמות של תלמידים חדשים שהצטרפו לאחרונה בשיטת extend() . הנה איך אתה יכול ללכת על זה:



תלמידי_כיתה = [ 'אליס' , 'בלה' , 'צ'רלי' ]

תלמידים חדשים = [ 'דוד' , 'אווה' , 'אדם' ]

תלמידי_כיתה. לְהַאֲרִיך ( תלמידים חדשים )

הדפס ( 'רשימת סטודנטים מעודכנת:' , תלמידי_כיתה )

בדוגמה זו, הרשימה המקורית שהיא 'תלמידים_כיתה' מכילה את שמות התלמידים הקיימים. רשימת 'תלמידים_חדשים' כוללת את שמות התלמידים שהצטרפו לאחרונה לכיתה. על ידי יישום המתודה extend() אנו מוסיפים את שמות התלמידים החדשים לסוף הרשימה המקורית.

דוגמה 3: החלת האופרטור '+=' עבור שרשור

האופרטור '+=' הוא קיצור של שיטת extend() . זה משנה את הרשימה במקום, משלב את האלמנטים של הרשימה הימנית לרשימה השמאלית.

נניח שיש לנו רשימה של צבעים מועדפים ואנו רוצים לעדכן אותה על ידי הוספת צבעים נוספים באמצעות האופרטור '+='.

צבעים אהובים = [ 'כְּחוֹל' , 'ירוק' , 'אָדוֹם' ]

צבעים נוספים = [ 'סָגוֹל' , 'תפוז' , 'צהוב' ]

אהובים_צבעים + = צבעים נוספים

הדפס ( 'צבעים מועדפים מעודכנים:' , צבעים אהובים )

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

לאחר הפעולה, כאשר אנו מדפיסים את 'הצבעים האהובים המעודכנים שלנו', נוכל לראות את התוצאה הבאה:

דוגמה 4: שימוש באופרטור '*'.

ניתן להשתמש באופרטור '*' לשכפול רשימה. אבל כאשר מוחל על רשימות, זה יכול לשרשר אותן על ידי חזרה על האלמנטים.

הנה דוגמה:

original_list = [ 1 , 2 , 3 ]

שרשרת_רשימה = original_list * 3

הדפס ( שרשרת_רשימה )

במקרה זה, אנו מתחילים עם 'original_list' המכילה את האלמנטים [1, 2, 3]. באמצעות האופרטור '*', אנו יוצרים רשימה חדשה שהיא ה-'concatenated_list' המורכבת משלוש חזרות של האלמנטים מהרשימה המקורית.

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

דוגמה 5: החלת הפונקציה Itertools.chain()

הפונקציה itertools.chain() היא חלק מהמודול 'itertools' ומשמשת לשרשרת ה-iterable (כמו רשימות, tuples או אובייקטים איטרבלים אחרים) ל-iterable יחיד. שלא כמו שיטות שרשור אחרות, itertools.chain() אינו יוצר רשימה חדשה אלא מייצר איטרטור על הרכיבים של איטרבלי הקלט.

מ itertools יְבוּא שַׁרשֶׁרֶת

L1 = [ 1 , 2 , 3 ]

L2 = [ 'איקס' , 'ו' , 'עם' ]

concatenated_iterable = שַׁרשֶׁרֶת ( L1 , L2 )

תוצאות_רשימת = רשימה ( concatenated_iterable )

הדפס ( תוצאות_רשימת )

בדוגמה הנתונה, יש לנו שתי רשימות - 'L1' מכיל את הערכים המספריים [1, 2, 3] ו-'L2' מכיל את התווים האלפביתיים ['x', 'y', 'z']. באמצעות הפונקציה itertools.chain(), אנו משרשרים את הרשימות הללו ל-iterable יחיד, המיוצג על ידי 'concatenated_iterable'. לאחר מכן מופעלת הפונקציה list() כדי להמיר את החזרה לרשימה שמביאה לרשימה המשולבת [1, 2, 3, 'x', 'y', 'z'].

דוגמה 6: חיתוך רשימה

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

הנה הקוד לדוגמה:

בפועל_רשימה = [ 1 , 2 , 3 , 4 , 5 ]

sliced_list = בפועל_רשימה [ 1 : 4 ]

הדפס ( sliced_list )

אנו מתחילים את האיור ברשימה מקורית של מספרים אשר מסומנת כ- 'actual_list' המכילה את האלמנטים [1, 2, 3, 4, 5]. אנו מחלצים קטע ספציפי מהרשימה על ידי שימוש בחיתוך הרשימה שהיא תכונה רבת עוצמה ב- Python. הפרוסה 'actual_list[1:4]' משמשת במקרה זה, והיא בוחרת את האלמנטים מאינדקס 1 עד אינדקס 3 (אך לא מאינדקס 4). התוצאה היא רשימה חדשה, בשם 'sliced_list', המכילה את החלק הפרוס [2, 3, 4].

דוגמה 7: שרשור עם הפונקציה Zip()

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

תלמידים = [ 'אליס' , 'בוב' , 'צ'רלי' ]

ציוני = [ 85 , 92 , 78 ]

זוגות_כיתה_תלמידים = רוכסן ( תלמידים , ציוני )

תוצאה_dict = dict ( זוגות_כיתה_תלמידים )

הדפס ( 'זוגות תלמיד-כיתה:' , תוצאה_dict )

בדוגמה זו, הפונקציה zip() מצווגת את שמות התלמידים מרשימת 'תלמידים' עם הציונים המתאימים שלהם מרשימת 'ציונים', מה שמוביל למילון שבו כל תלמיד משויך לציון המתאים לו.

סיכום

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