Ratkaistu: nimeä kaksoiskappaleet uudelleen luettelopythonissa

Luettelon kaksoiskappaleiden uudelleennimeäminen voi olla vaikea ratkaista, koska se edellyttää kaksoiskappaleiden tunnistamista ja niiden uudelleennimeämisen päättämistä. Tämä voi olla erityisen haastavaa, jos luettelo sisältää monia elementtejä tai jos elementit ovat monimutkaisia ​​objekteja. Lisäksi kaksoiskappaleiden uudelleennimeäminen voi vaatia sinua muokkaamaan muita koodisi osia, jotka perustuvat elementtien alkuperäisiin nimiin, jotta ne toimivat edelleen oikein.

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

# Tämä koodi määrittää funktion nimeltä rename_duplicates, joka ottaa luettelon argumenttina.
def rename_duplicates(lst):

# Sen jälkeen se luo tyhjän joukon nimeltä seen ja tyhjän listan nimeltä new_lst.
seen = asetettu ()
new_lst = []

# Sen jälkeen se toistaa luettelon kohteet ja tarkistaa, ovatko ne jo nähtyjen kohteiden joukossa.
lst:n nimikkeelle:
jos kohdetta ei näy: # Jos ei ole, se lisää sen nähtyjen kohteiden joukkoon ja lisää sen uuteen luetteloon.
nähnyt.lisää(tuote)
new_lst.append(item) # Jos on, se luo yksilöllisen version kyseisestä kohteesta lisäämällä päätteen (esim. '_1') sen nimeen ja tarkistaa, onko tämä äskettäin luotu kohde jo nähtyjen kohteiden joukossa.

else: # Jos näin on, se kasvattaa päätettä, kunnes se löytää käyttämättömän version kyseisen alkion nimestä ja lisää tämän juuri luodun kohteen sekä nähtyjen kohteiden joukkoon että uuteen luetteloon ennen kuin palauttaa tämän uuden luettelon suorituksen lopussa.

new_item = nimike + '_1'

kun taas uusi_kohde näkyy: # lisää päätettä, kunnes yksilöllinen

suffiksi = int(new_item.split('_')[-1]) + 1 # hanki viimeinen numero ja lisää siihen yksi

new_item = '{}_{}'.format('_'.join(new_item.split('_'))[:-1]), pääte)

seen.add(uusi

Listat Pythonissa

Pythonin listat ovat yksi yleisimmin käytetyistä tietorakenteista. Niitä käytetään tallentamaan kokoelma kohteita, jotka voivat olla mitä tahansa tyyppiä, mukaan lukien muut luettelot. Listat ovat muuttuvia, eli niitä voidaan muuttaa luomisen jälkeen. Ne tukevat myös toimintoja, kuten indeksointia, viipalointia ja ketjuttamista.

Luodaksesi luettelon Pythonissa käytät hakasulkeita ja erottelet jokaisen kohteen pilkulla:

oma_lista = [1, 2, 3]

Voit käyttää luettelon yksittäisiä elementtejä käyttämällä niiden hakemistoa:
my_list[0] # palauttaa 1
my_list[1] # palauttaa 2
my_list[2] # palauttaa 3

Voit myös käyttää negatiivisia indeksejä päästäksesi luettelon lopusta oleviin elementteihin:

my_list[-1] # palauttaa 3:n (viimeinen elementti)

Voit lisätä kohteita luetteloon append()-menetelmällä:

my_list.append(4) # lisää 4 luettelon loppuun

Voit poistaa kohteita luettelosta käyttämällä joko poista()- tai pop()-menetelmiä:

my_list.remove(3) # poistaa 3 luettelosta

my_list.pop(2) # poistaa ja palauttaa 2:n (kolmannen elementin) luettelosta

Nimeä kaksoiskappaleet uudelleen luettelossa Pythonissa

Pythonissa olevien luetteloiden kaksoiskappaleiden uudelleennimeäminen on yleinen tehtävä luetteloita käsiteltäessä. Se sisältää luettelon päällekkäisten elementtien korvaamisen yksilöllisillä arvoilla. Tämä voidaan tehdä käyttämällä set()-funktiota, joka poistaa kaikki päällekkäiset elementit luettelosta ja palauttaa uuden luettelon, jossa on vain yksilöllisiä elementtejä. Set()-funktiota voidaan käyttää myös kaksoiskappaleiden uudelleennimeämiseen tarjoamalla sille kartoitus vanhoista arvoista uusiin arvoihin. Jos sinulla on esimerkiksi luettelo numeroista ja haluat korvata kaikki kaksoiskappaleet vastaavilla neliöillä, voit käyttää seuraavaa koodia:

# Luo tyhjä sanakirja
kartoitus = {}

# Toista alkuperäistä luetteloa
kohteelle my_list:
# Tarkista, onko kohde jo olemassa sanakirjassa
jos kohde ei ole kartoituksessa:
# Jos ei, lisää se sanakirjaan ja määritä sen neliö arvoksi
kartoitus[tuote] = nimike * tuote

# Luo tyhjä tulosluettelo
tuloslista = []

# Toista alkuperäinen luettelo uudelleen ja korvaa jokainen elementti sen neliöllä sanakirjasta i:lle my_list: result_list.append(mapping[i])

# Tulosta tulostulostus(tulosluettelo)

Related viestiä:

Jätä kommentti