Решено: преименуј дупликате у листи питона

Преименовање дупликата на листи може бити тежак проблем за решавање јер захтева да идентификујете дупликате, а затим одлучите како да их преименујете. Ово може бити посебно изазовно ако листа садржи много елемената или ако су елементи сложени објекти. Поред тога, преименовање дупликата може захтевати од вас да измените друге делове вашег кода који се ослањају на оригинална имена елемената како би они наставили да правилно функционишу.

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

_лст

# Овај код дефинише функцију која се зове ренаме_дуплицатес која узима листу као аргумент.
деф ренаме_дуплицатес(лст):

# Затим креира празан скуп који се зове сеен и празну листу под називом нев_лст.
виђено = сет()
нев_лст = []

# Затим прелази кроз ставке на листи и проверава да ли су већ у скупу виђених ставки.
за ставку у лст:
ако ставка није виђена: # Ако није, додаје је у скуп виђених ставки и додаје је новој листи.
сеен.адд(итем)
нев_лст.аппенд(итем) # Ако јесте, креира јединствену верзију те ставке додавањем суфикса (нпр. '_1') њеном имену и проверава да ли је ова новокреирана ставка већ у скупу виђених ставки.

елсе: # Ако је тако, повећава суфикс док не пронађе неискоришћену верзију назива те ставке и дода ову новокреирану ставку и скупу виђених ставки и новој листи пре него што врати ову нову листу на крају њеног извршења.

нев_итем = итем + '_1'

док нев_итем у виђеном: # повећавајући суфикс док не буде јединствен

суфикс = инт(нев_итем.сплит('_')[-1]) + 1 # преузми последњи број и додај му један

нев_итем = '{}_{}'.формат('_'.јоин(нев_итем.сплит('_')[:-1]), суфикс)

виђено.додај(ново

Листе у Питхон-у

Листе у Питхон-у су једна од најчешће коришћених структура података. Користе се за чување колекције ставки, које могу бити било ког типа, укључујући и друге листе. Листе су променљиве, што значи да се могу мењати након што су креиране. Они такође подржавају операције као што су индексирање, сечење и спајање.

Да бисте направили листу у Питхон-у, користите угласте заграде и сваку ставку одвојите зарезом:

моја_лист = [1, 2, 3]

Можете приступити појединачним елементима на листи користећи њихов индекс:
ми_лист[0] # враћа 1
ми_лист[1] # враћа 2
ми_лист[2] # враћа 3

Такође можете користити негативне индексе за приступ елементима са краја листе:

ми_лист[-1] # враћа 3 (последњи елемент)

Можете додати ставке на листу помоћу методе аппенд():

ми_лист.аппенд(4) # додаје 4 на крај листе

Можете уклонити ставке са листе помоћу метода ремове() или поп():

ми_лист.ремове(3) # уклања 3 са листе

ми_лист.поп(2) # уклања и враћа 2 (трећи елемент) са листе

Преименујте дупликате на листи у Питхон-у

Преименовање дупликата у листи у Питхон-у је уобичајен задатак када се ради са листама. То укључује замену дупликата на листи јединственим вредностима. Ово се може урадити помоћу функције сет(), која уклања све дуплиране елементе са листе и враћа нову листу само са јединственим елементима. Функција сет() се такође може користити за преименовање дупликата тако што ће јој обезбедити мапирање старих вредности у нове вредности. На пример, ако имате листу бројева и желите да замените све дупликате њиховим одговарајућим квадратима, можете користити следећи код:

# Направите празан речник
мапирање = {}

# Пређите преко оригиналне листе
за ставку у мојој_листи:
# Проверите да ли ставка већ постоји у речнику
ако ставка није у мапирању:
# Ако није, додајте га у речник и доделите му квадрат као вредност
мапирање[ставка] = ставка * ставка

# Направите празну листу резултата
листа_резултата = []

# Поново пређите преко оригиналне листе и замените сваки елемент његовим квадратом из речника за и у мојој_листи: ресулт_лист.аппенд(маппинг[и])

# Штампање резултата (лист_ресулт_лист)

Релатед постс:

Оставите коментар