[python] Metody korenoveho objektu

Jan Svec honza na py.cz
Pondělí Duben 7 15:14:30 CEST 2003


On Mon, 7 Apr 2003, Petr Vaněk wrote:

> Dne po 7. dubna 2003 14:11 Jan Svec napsal(a):
> > A co je ono collect, select atd.? Ne kazdy zna Smalltalk
> > jako oni. Nejde to pomoci map, reduce, filter nebo strucneho
> > seznamu?
>
> smalltalkovy pseudokod:
>
> seznam = [1 2 3 4 5]  v pythonu  [1,2,3...]
> novySeznam = seznam select: [:x, x>3]
> novySeznam je ted [4 5]
>
> http://www.gnu.org/software/smalltalk/gst-manual/gst_74.html
>
> v podstate vsechno ostatni krome "select" jde osetrit pomoci
> map atd., ale opravdu mne nenapada, jak select jednoduse
> implementovat treba nad dictionary...

Jestli jsem to vsechno dobre pochopil, tak budes potrebovat
strucny slovnik. Uz jsme se specialne o tomhle bavili na
sraziku, takze budes moc psat neco jako. Bohuzel je to stale
jeste hudba budoucnosti:

d = {1: 'jedna', 2: 'dve', 3: 'tri', 4: 'ctyri'}
novy_d = {k: v for k, v in d.iteritems() if k > 3}

Pak v novy_d budes mit podmnozinu d kde klice budou vetsi
nez 3. Vic se toho dozvis z PEP274. Je tam i obecna
formulka, jak strucny seznam pretvorit na dictionary, podle
toho dojdes k necemu takovemu:

novy_d = dict([(k, v) for k, v in d.iteritems() if k > 3])

Viva iteratory!

--
S pozdravem    .-------------------------.
Jan Svec       | Znate jazyk Python? NE? |
               | zkuste http://www.py.cz |
.--------------+-------------------------+
|            <honza na py.cz>               |
|     http://www.py.cz/Members/honza     |
|            honzas na jabber.cz            |
`----------------------------------------'



Další informace o konferenci Python