[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