Megoldva: a duplikátumok átnevezése a python listában

A listában szereplő ismétlődések átnevezése nehezen megoldható probléma lehet, mert ehhez azonosítania kell a másolatokat, majd el kell döntenie, hogyan nevezze át őket. Ez különösen nagy kihívást jelenthet, ha a lista sok elemet tartalmaz, vagy ha az elemek összetett objektumok. Ezenkívül a duplikátumok átnevezése megkövetelheti, hogy módosítsa a kód olyan részeit, amelyek az elemek eredeti nevére támaszkodnak, hogy továbbra is megfelelően működjenek.

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

_lst

# Ez a kód egy rename_duplicates nevű függvényt határoz meg, amely egy listát vesz fel argumentumként.
def rename_duplicates(lst):

# Ezután létrehoz egy üres halmazt, amely látható néven, és egy üres listát új_lst néven.
látott = set()
new_lst = []

# Ezután a lista elemei között iterál, és ellenőrzi, hogy azok már benne vannak-e a látott elemek halmazában.
az lst-ben található tételhez:
if item not in seen: # Ha nem, akkor hozzáadja a látott elemek halmazához, és hozzáfűzi az új listához.
látott.add(elem)
new_lst.append(item) # Ha igen, akkor létrehoz egy egyedi verziót az elemről egy utótag (pl. '_1') hozzáadásával a nevéhez, és ellenőrzi, hogy az újonnan létrehozott elem már benne van-e a látott elemek halmazában.

else: # Ha igen, addig növeli az utótagot, amíg meg nem találja az elemnév egy nem használt változatát, és hozzáadja ezt az újonnan létrehozott elemet mind a látott elemek halmazához, mind az új listához, mielőtt visszaadja ezt az új listát a végrehajtás végén.

new_item = elem + '_1'

míg az új_elem látható: # utótag növelése egyediig

utótag = int(new_item.split('_')[-1]) + 1 # az utolsó szám lekérése és egy hozzáadás

new_item = '{}_{}'.format('_'.join(new_item.split('_')[:-1]), utótag)

seen.add(new

Listák Pythonban

A Python listái az egyik leggyakrabban használt adatstruktúra. Elemek gyűjteményének tárolására szolgálnak, amelyek bármilyen típusúak lehetnek, beleértve az egyéb listákat is. A listák változtathatók, vagyis a létrehozásuk után módosíthatók. Támogatják az olyan műveleteket is, mint az indexelés, a szeletelés és az összefűzés.

Ha Pythonban szeretne listát készíteni, használjon szögletes zárójeleket, és válassza el az egyes elemeket vesszővel:

my_list = [1, 2, 3]

A lista egyes elemeit indexük segítségével érheti el:
my_list[0] # 1-et ad vissza
my_list[1] # 2-et ad vissza
my_list[2] # 3-et ad vissza

Negatív indexekkel is hozzáférhet a lista végén található elemekhez:

my_list[-1] # 3-at ad vissza (az utolsó elem)

A listához az append() metódussal adhat hozzá elemeket:

my_list.append(4) # 4-et ad a lista végére

Az elemeket a listáról az remove() vagy pop() metódussal távolíthatja el:

my_list.remove(3) # eltávolít 3-at a listáról

my_list.pop(2) # eltávolítja és visszaadja a 2-t (a harmadik elemet) a listából

Nevezze át a duplikátumokat a listában a Pythonban

A Python listában lévő duplikátumok átnevezése gyakori feladat a listák kezelésekor. Ez magában foglalja a lista ismétlődő elemeinek egyedi értékekkel történő helyettesítését. Ez megtehető a set() függvénnyel, amely eltávolítja az összes ismétlődő elemet a listából, és egy új listát ad vissza, amely csak egyedi elemeket tartalmaz. A set() függvény a duplikátumok átnevezésére is használható, ha a régi értékeket új értékekre leképezi. Például, ha van számlistája, és az összes másolatot a megfelelő négyzetekre szeretné cserélni, használhatja a következő kódot:

# Hozzon létre egy üres szótárt
leképezés = {}

# Ismételje meg az eredeti listát
a listámban lévő elemhez:
# Ellenőrizze, hogy az elem létezik-e már a szótárban
ha az elem nincs a térképen:
# Ha nem, adja hozzá a szótárhoz, és rendelje hozzá értékként a négyzetét
leképezés[elem] = elem * elem

# Hozzon létre egy üres eredménylistát
result_list = []

# Ismételje meg az eredeti listát, és cserélje ki az egyes elemeket az i szótárból származó négyzetére a listámban: result_list.append(mapping[i])

# Eredmény nyomtatása (eredménylista)

Kapcsolódó hozzászólások:

Írj hozzászólást