[python] Odstraneni duplicitnich retezcu
Petr Prikryl
PrikrylP na skil.cz
Středa Červenec 20 11:30:07 CEST 2005
viz níže...
> Tomas Fulajtar
> >VANEK Petr...
> > > od verze 2.3 podporuje Python knihovnu sets, coz
> > > jsou netridene seznamy unikatnich polozek. [...]
> >
> > Akorat ja mam v dokumentaci:
> > "A set object [...] New in version 2.4."
>
> To bude asi nejaka inkonsistence v dokumentaci. Ja
> jsem se dival do dokumentace verze 2.4, kde ovsem v
> kapitole 5.15 je zmineno ze se modul objevil uz ve
> verzi 2.3. Bohuzel mi tu nebezi 2.3, abych to mohl
> overit.
V 2.3 se sets objevil jako modul, v 2.4 byla implementace
množin (v C) zařazena do jádra. Původní modul sets.py
k implementaci využíval klasického slovníku. Stále se
dodává, ale asi bude lepší používat novější implementaci
http://www.python.org/doc/2.4/whatsnew/node2.html
Nyní tedy existuje zabudované funkce set() a frozenset().
V tomto smyslu musím poopravit své minulé řešení:
===========================================
def myUniq(lst):
result = []
processed = set() # prazdna mnozina jiz zpracovanych
for item in lst:
if item not in processed:
result.append(item)
processed.add(item)
return result
===========================================
Tohle řešení zachová původní pořadí položek
(pouze se vyhážou druhé a další výskyty).
Pokud nezáleží na pořadí, pak bych použil
lst =['AAA', 'BBB', 'AAA', 'BBB', 'CCC']
result = list(set(lst))
pepr
Další informace o konferenci Python