נפתרה: שנה שם כפילויות בפיתון הרשימה

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

def rename_duplicates(lst): 
    seen = set() 
    new_lst = [] 

    for item in lst: 
        if item not in seen: 
            seen.add(item) 
            new_lst.append(item) 
        else: 
            new_item = item + '_1'   # append a suffix to make it unique  

            while new_item in seen:   # increment the suffix until it's unique  
                suffix = int(new_item.split('_')[-1]) + 1   # get the last number and add one to it  
                new_item = '{}_{}'.format('_'.join(new_item.split('_')[:-1]), suffix)

            seen.add(new_item)     # add the newly created item to the set of seen items  
            new_lst.append(new_item)     # append the newly created item to the list

    return new

_לסט

# קוד זה מגדיר פונקציה בשם rename_duplicates שמקבלת רשימה כארגומנט.
def rename_duplicates(lst):

# לאחר מכן הוא יוצר סט ריק בשם seen ורשימה ריקה בשם new_lst.
ראה = סט ()
new_lst = []

# לאחר מכן הוא חוזר על הפריטים ברשימה ובודק אם הם כבר נמצאים בקבוצת הפריטים שנראו.
עבור פריט ב-lst:
אם פריט לא נראה: # אם לא, הוא מוסיף אותו לקבוצת הפריטים שנראו ומצרף אותו לרשימה החדשה.
seen.add(item)
new_lst.append(item) # אם כן, הוא יוצר גרסה ייחודית של אותו פריט על ידי הוספת סיומת (למשל, '_1') לשמו ובודק אם הפריט החדש שנוצר כבר נמצא בקבוצת הפריטים שנראו.

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

new_item = פריט + '_1'

while new_item in seen: # תוספת סיומת עד ייחודית

סיומת = int(new_item.split('_')[-1]) + 1 # קבל את המספר האחרון והוסף לו אחד

new_item = '{}_{}'.format('_'.join(new_item.split('_')[:-1]), סיומת)

seen.add(חדש

רשימות בפייתון

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

כדי ליצור רשימה ב-Python, אתה משתמש בסוגריים מרובעים ומפריד כל פריט בפסיק:

my_list = [1, 2, 3]

אתה יכול לגשת לאלמנטים בודדים ברשימה באמצעות האינדקס שלהם:
my_list[0] # מחזירה 1
my_list[1] # מחזירה 2
my_list[2] # מחזירה 3

אתה יכול גם להשתמש במדדים שליליים כדי לגשת לאלמנטים מסוף הרשימה:

my_list[-1] # מחזירה 3 (האלמנט האחרון)

אתה יכול להוסיף פריטים לרשימה באמצעות שיטת append():

my_list.append(4) # מוסיף 4 לסוף הרשימה

אתה יכול להסיר פריטים מרשימה באמצעות שיטות remove() או pop():

my_list.remove(3) # מסיר 3 מהרשימה

my_list.pop(2) # מסיר ומחזיר 2 (האלמנט השלישי) מהרשימה

שנה את השם של כפילויות ברשימה ב- Python

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

# צור מילון ריק
מיפוי = {}

# חזור על הרשימה המקורית
עבור פריט ב-my_list:
# בדוק אם הפריט כבר קיים במילון
אם הפריט אינו במיפוי:
# אם לא, הוסף אותו למילון והקצה את הריבוע שלו כערך
מיפוי[item] = פריט * פריט

# צור רשימת תוצאות ריקה
תוצאות_רשימת = []

# חזור על הרשימה המקורית שוב והחלף כל רכיב בריבוע שלו מהמילון עבור i ב-my_list: result_list.append(mapping[i])

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

הודעות קשורות:

השאירו תגובה