Alinomi duplikatojn en listo povas esti malfacila problemo solvi ĉar ĝi postulas, ke vi identigu la duplikatojn kaj poste decidi kiel renomi ilin. Ĉi tio povas esti speciale malfacila se la listo enhavas multajn elementojn aŭ se la elementoj estas kompleksaj objektoj. Aldone, renomi duplikatojn povas postuli, ke vi modifi aliajn partojn de via kodo, kiuj dependas de la originaj nomoj de la elementoj, por ke ili daŭre funkciu ĝuste.
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
# Ĉi tiu kodo difinas funkcion nomatan rename_duplicates kiu prenas liston kiel argumenton.
def rename_duplicates(lst):
# Ĝi tiam kreas malplenan aron nomatan vidita kaj malplenan liston nomatan new_lst.
vidita = aro ()
nova_lst = []
# Ĝi tiam ripetas la aĵojn en la listo kaj kontrolas ĉu ili jam estas en la aro de viditaj eroj.
por ero en lst:
se aĵo ne videblas: # Se ĝi ne estas, ĝi aldonas ĝin al la aro de viditaj eroj kaj aldonas ĝin al la nova listo.
vidita.aldoni(ero)
new_lst.append(item) # Se ĝi estas, ĝi kreas unikan version de tiu ero aldonante sufikson (ekz., '_1') al sia nomo kaj kontrolas ĉu ĉi tiu nove kreita ero jam estas en la aro de viditaj eroj.
else: # Se jes, ĝi pliigas la sufikson ĝis ĝi trovas neuzatan version de tiu eronnomo kaj aldonas ĉi tiun nove kreitan eron kaj al la aro de viditaj eroj kaj al la nova listo antaŭ ol redoni ĉi tiun novan liston ĉe la fino de ĝia ekzekuto.
nova_ero = ero + '_1'
while new_item in seen: # pliiga sufikso ĝis unika
sufikso = int(new_item.split('_')[-1]) + 1 # ricevu lastan numeron kaj aldonu unu al ĝi
nova_itemo = '{}_{}'.format('_'.join(new_item.split('_')[:-1]), sufikso)
vidita.aldoni (nova
Listoj en Python
Listoj en Python estas unu el la plej ofte uzataj datumstrukturoj. Ili estas uzataj por konservi kolekton de eroj, kiuj povas esti de ajna tipo, inkluzive de aliaj listoj. Listoj estas ŝanĝeblaj, signifante ke ili povas esti ŝanĝitaj post kiam ili estis kreitaj. Ili ankaŭ subtenas operaciojn kiel ekzemple indeksado, tranĉaĵo kaj kunligado.
Por krei liston en Python, vi uzas kvadratajn krampojn kaj apartigu ĉiun eron per komo:
mia_listo = [1, 2, 3]
Vi povas aliri individuajn elementojn en la listo uzante ilian indekson:
mia_listo[0] # donas 1
mia_listo[1] # donas 2
mia_listo[2] # donas 3
Vi ankaŭ povas uzi negativajn indeksojn por aliri elementojn de la fino de la listo:
mia_listo[-1] # liveras 3 (la lasta elemento)
Vi povas aldoni erojn al listo per la metodo append():
my_list.append(4) # aldonas 4 al la fino de la listo
Vi povas forigi erojn el listo uzante la metodojn remove() aŭ pop():
mia_listo.remove(3) # forigas 3 el la listo
mia_listo.pop(2) # forigas kaj resendas 2 (la trian elementon) el la listo
Alinomi duplikatojn en listo en Python
Alinomi duplikatojn en listo en Python estas ofta tasko kiam traktas listojn. Ĝi implikas anstataŭigi duplikatajn elementojn en listo kun unikaj valoroj. Ĉi tio povas esti farita per la set() funkcio, kiu forigas ĉiujn duplikatajn elementojn de listo kaj resendas novan liston kun nur unikaj elementoj. La funkcio set() ankaŭ povas esti uzata por renomi duplikatojn provizante ĝin per mapado de malnovaj valoroj al novaj valoroj. Ekzemple, se vi havas liston de nombroj kaj volas anstataŭigi ĉiujn duplikatojn per iliaj respektivaj kvadratoj, vi povus uzi la jenan kodon:
# Kreu malplenan vortaron
mapado = {}
# Ripetu super la originala listo
por ero en mia_listo:
# Kontrolu ĉu ero jam ekzistas en vortaro
se ero ne en mapado:
# Se ne, aldonu ĝin al vortaro kaj asignu ĝian kvadraton kiel valoron
mapping[item] = ero * ero
# Kreu malplenan rezultoliston
rezulto_list = []
# Ripetu super originala listo denove kaj anstataŭigu ĉiun elementon per ĝia kvadrato de vortaro por i en mia_listo: result_list.append (mapping[i])
# Presi rezulton (result_list)