נניח שיש לך רשימה המכילה מספרים כפולים:
numbers = [1, 1, 2, 3, 3, 4]
אבל אתה רוצה רשימה של מספרים ייחודיים .
unique_numbers = [1, 2, 3, 4]
ישנן מספר דרכים להשיג רשימה של ערכים ייחודיים ב- Python. מאמר זה יראה לכם כיצד.
אפשרות 1 - שימוש בסט לקבלת אלמנטים ייחודיים
באמצעות set
דרך אחת ללכת על זה. קבוצה שימושית מכיוון שהיא מכילה אלמנטים ייחודיים.
אתה יכול להשתמש בערכה כדי לקבל את האלמנטים הייחודיים. לאחר מכן, הפכו את הסט לרשימה.
בואו נסתכל על שתי גישות המשתמשות בערכה וברשימה. הגישה הראשונה היא מילולית, אך כדאי לראות מה קורה בכל שלב בדרך.
numbers = [1, 2, 2, 3, 3, 4, 5] def get_unique_numbers(numbers): list_of_unique_numbers = [] unique_numbers = set(numbers) for number in unique_numbers: list_of_unique_numbers.append(number) return list_of_unique_numbers print(get_unique_numbers(numbers)) # result: [1, 2, 3, 4, 5]
בואו נסתכל מקרוב על מה שקורה. ניתנת לי רשימת מספרים numbers
,. אני מעביר את הרשימה לפונקציה get_unique_numbers
,.
בתוך הפונקציה, אני יוצר רשימה ריקה, שבסופו של דבר תכיל את כל המספרים הייחודיים. לאחר מכן, אני משתמש ב- set
כדי לקבל את המספרים הייחודיים numbers
מהרשימה.
unique_numbers = set(numbers)
יש לי את מה שאני צריך: המספרים הייחודיים. עכשיו אני צריך להכניס את הערכים האלה לרשימה. לשם כך, אני משתמש בלולאה for כדי לחזור על כל מספר בערכה.
for number in unique_numbers: list_of_unique_numbers.append(number)
בכל איטרציה אני מוסיף את המספר הנוכחי לרשימה list_of_unique_numbers
,. לסיום, אני מחזיר רשימה זו בסוף התוכנית.
יש דרך קצרה יותר להשתמש בערכה ורשימה כדי לקבל ערכים ייחודיים בפייתון. זה מה שנתמודד בהמשך.
גישה קצרה יותר עם סט
את כל הקוד שנכתב בדוגמה לעיל ניתן לעבות לשורה אחת בעזרת הפונקציות המובנות של פייתון.
numbers = [1, 2, 2, 3, 3, 4, 5] unique_numbers = list(set(numbers)) print(unique_numbers) # Result: [1, 2, 3, 4, 5]
למרות שקוד זה נראה שונה מאוד מהדוגמה הראשונה, הרעיון זהה. השתמש בערכה כדי לקבל את המספרים הייחודיים. לאחר מכן, הפכו את הסט לרשימה.
unique_numbers = list(set(numbers))
כדאי לחשוב "מבפנים" כשקוראים את הקוד לעיל. הקוד הכמוס מקבל מוערכות ראשון: set(numbers)
. ואז, את הקוד החיצוני מוערך: list(set(numbers))
.
אפשרות 2 - שימוש ב- Iteration לזיהוי ערכים ייחודיים
איטרציה היא גישה נוספת שיש לקחת בחשבון.
הרעיון העיקרי הוא ליצור רשימה ריקה שתחזיק מספרים ייחודיים. לאחר מכן, השתמש בלולאה חוזרת על כל מספר ברשימה הנתונה. אם המספר כבר נמצא ברשימה הייחודית, המשך לאיטרציה הבאה. אחרת, הוסף את המספר אליו.
בואו נסתכל על שתי דרכים להשתמש באיטרציה כדי להשיג את הערכים הייחודיים ברשימה, החל מהערך המילולי יותר.
numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number in unique: continue else: unique.append(number) return unique print(get_unique_numbers(numbers)) # Result: [20, 30, 40]
הנה מה שקורה בכל שלב בדרך. ראשית, ניתנת לי רשימת מספרים numbers
,. אני מעביר את הרשימה לתפקיד שלי get_unique_numbers
,.
בתוך הפונקציה, אני יוצר רשימה ריקה unique
,. בסופו של דבר, רשימה זו תכיל את כל המספרים הייחודיים.
אני משתמש בלולאה for כדי לחזור על כל מספר numbers
ברשימה.
for number in numbers: if number in unique: continue else: unique.append(number)
התנאי שבתוך הלולאה בודק אם מספר האיטרציה הנוכחית נמצא unique
ברשימה. אם כן, הלולאה ממשיכה לאיטרציה הבאה. אחרת, המספר יתווסף לרשימה זו.
הנה הנקודה החשובה: רק המספרים הייחודיים מתווספים. לאחר השלמת הלולאה, אז אני חוזר unique
המכיל את כל המספרים הייחודיים.
גישה קצרה יותר עם איטרציה
יש דרך נוספת לכתוב את הפונקציה בפחות שורות.
numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number not in unique: unique.append(number) return unique #Result: [20, 30, 40]
ההבדל הוא המותנה. הפעם הוא מוגדר לקרוא כך: אם המספר אינו נמצא unique
, הוסף אותו.
if number not in unique: unique.append(number)
אחרת, הלולאה תעבור למספר הבא ברשימה numbers
,.
התוצאה זהה. עם זאת, לפעמים קשה יותר לחשוב ולקרוא קוד כאשר הבוליאני נשלל.
ישנן דרכים אחרות למצוא ערכים ייחודיים ברשימת Python. אך ככל הנראה תמצאו את עצמכם מגיעים לאחת הגישות שעוסקות במאמר זה.
אני כותב על למידה לתכנת ועל הדרכים הטובות ביותר לעשות זאת באתר amymhaddad.com. עקבו אחרי בטוויטר: @amymhaddad.