ב-Python, מחרוזת היא רצף של תווים, ורשימה היא אוסף של אלמנטים שיכולים להיות מכל סוג נתונים, כולל מחרוזות. חִסוּר של רשימת מחרוזות כרוך בהסרת אלמנטים המשותפים בין שניים רשימות אוֹ מחרוזות .
כדי להחסיר רשימת מחרוזות אחת מאחרת, אתה יכול להשתמש ב- 'מַעֲרֶכֶת' סוג נתונים ב- Python. סוג הנתונים שנקבע הוא אוסף לא מסודר של אלמנטים ייחודיים. אופרטור החיסור '-' ניתן להשתמש בין שתי קבוצות כדי למצוא את האלמנטים בקבוצה הראשונה שאינם קיימים בקבוצה השנייה.
דוגמא:
הנה דוגמה להפחתת רשימת מחרוזות אחת מאחרת באמצעות סוג הנתונים שנקבע:
list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = list(set(list1) - set(list2)) print(result)
תְפוּקָה:
['apple', 'cherry']
בדוגמה למעלה, אנו מגדירים שתי רשימות, 'גיליון1' ו 'רשימה2' . לאחר מכן, אנו ממירים כל רשימה לסט באמצעות ה- 'מַעֲרֶכֶת' פונקציה ב- Python. לאחר מכן, אנו משתמשים ב- '-' אופרטור להפחתת הרכיבים של 'רשימה2' מ 'גיליון1' . לבסוף, אנו ממירים את הסט המתקבל בחזרה לרשימה באמצעות ה- 'רשימה' פונקציה ב- Python.
זה מביא לרשימה חדשה 'תוֹצָאָה' שמכיל את האלמנטים של 'גיליון1' שאינם נמצאים ב 'רשימה2' , שבמקרה זה הם 'תפוח עץ' ו 'דובדבן' .
דוגמא:
הנה דוגמה נוספת שמראה כיצד להחסיר רשימה של מחרוזות ממחרוזת בודדת:
string1 = 'Hello world!' list1 = ['o', 'l', 'd'] result = ''.join([char for char in string1 if char not in list1]) print(result)
תְפוּקָה:
'He wr!'
בדוגמה למעלה, אנו מגדירים מחרוזת 'מחרוזת1' ורשימת מחרוזות 'גיליון1' . לאחר מכן, אנו משתמשים בהבנת רשימה כדי לחזור על כל תו 'מחרוזת1' ולבדוק אם זה קיים ב 'גיליון1' . אם הדמות לא נמצאת 'גיליון1' , אנו מוסיפים אותו לרשימה חדשה באמצעות ה- 'לְהִצְטַרֵף' שיטה. לבסוף, אנו ממירים את הרשימה המתקבלת בחזרה למחרוזת.
כתוצאה מכך נוצר מחרוזת חדשה 'תוֹצָאָה' שמכיל רק את התווים של 'מחרוזת1' שאינם נמצאים ב 'גיליון1' , שבמקרה זה הם 'H', 'e', '' ', 'w' , ו 'ר' .
ראוי לציין כי ייתכן שסדר האלמנטים ברשימה או המחרוזת המתקבלת לא יישמר. אם אתה צריך לשמר את הסדר, אתה יכול להשתמש בהבנת רשימה עם א 'אם' הצהרה כדי לסנן את האלמנטים הקיימים ברשימה השנייה.
דוגמא:
list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = [item for item in list1 if item not in list2] print(result)
תְפוּקָה:
['apple', 'cherry']
בדוגמה למעלה, אנו מגדירים שתי רשימות, 'גיליון1' ו 'רשימה2' . לאחר מכן, אנו משתמשים בהבנת רשימה כדי לחזור על כל רכיב 'גיליון1' ולבדוק אם זה קיים ב 'רשימה2' . אם האלמנט לא נמצא 'רשימה2' , אנו מוסיפים אותו לרשימה חדשה. לבסוף, אנו מדפיסים את הרשימה המתקבלת, המכילה את האלמנטים של 'גיליון1' שאינם נמצאים ב 'רשימה2' .
קצת מידע נוסף:
סוגי נתונים סט מול רשימה:
כפי שהוזכר קודם לכן, בהפחתת רשימות מחרוזות, מומלץ להמיר את הרשימות לקבוצות. הסיבה לכך היא שסטים מותאמים לבדיקת קיומם של אלמנטים והסרת כפילויות. עם זאת, אם חשוב לשמור על סדר האלמנטים, אז אולי עדיף להשתמש בהבנת רשימה במקום זאת.
שיקולי ביצועים:
המרת רשימות לקבוצות עשויה להיות פעולה יקרה מבחינה חישובית, במיוחד עבור רשימות גדולות. אם הביצועים מעוררים דאגה, מומלץ לשקול להשתמש בגישות חלופיות כגון הבנת רשימה או ביטוי מחולל.
השתנות:
חשוב לציין שסטים הם מִשְׁתַנֶה , בעוד מחרוזות ו tuples (שיכולים לשמש גם כסוגי נתונים שניתנים לחזרה) אינם. זה אומר שכאשר אתה מחסיר קבוצה מקבוצה אחרת, הסט המתקבל הוא מִשְׁתַנֶה , ואתה יכול לשנות את תוכנו. מצד שני, כאשר מחסירים רשימה או טופלה מרשימה או טופלה אחרת, הרשימה או הטופלה המתקבלת אינה ניתנת לשינוי, ולא ניתן לשנות את תוכנה.
רשימות מקוננות:
אם אתה עובד עם רשימות מקוננות, ייתכן שתצטרך להשתמש בלולאה מקוננת או ברקורסיה כדי לגרוע רשימה אחת מאחרת. הנה דוגמה:
list1 = [['apple', 'banana'], ['cherry', 'orange']] list2 = [['banana', 'kiwi'], ['cherry', 'pear']] result = [] for sublist1, sublist2 in zip(list1, list2): subresult = [item for item in sublist1 if item not in sublist2] result.append(subresult) print(result)
תְפוּקָה:
[['apple'], ['orange']]
בדוגמה לעיל, אנו מגדירים שתי רשימות מקוננות, 'גיליון1' ו 'רשימה2' . לאחר מכן, אנו משתמשים בלולאת for כדי לחזור על כל זוג רשימות משנה 'גיליון1' ו 'רשימה2' . אנו משתמשים בהבנת רשימה כדי להחסיר את הרכיבים של כל תת-רשימה 'רשימה2' מתוך רשימת המשנה המתאימה ב' עלה1' . לבסוף, אנו מצרפים את רשימות המשנה המתקבלות לרשימה חדשה 'תוֹצָאָה' .