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)