[python] Seznamy

Jan Bednařík jan.bednarik na gmail.com
Pondělí Únor 9 21:50:10 CET 2015


2015-02-09 16:35 GMT+01:00 Honza Král <honza.kral na gmail.com>:

> ne, o tom jsem nemluvil, predpokladam python 3 :)
>
> Materializuje se kvuli predani do intersection - viz operator '*'
>

To se dá vyřešit třeba nahrazením:

... set.intersection(*map( ...

za:

... reduce(set.intersection, map( ...

a je to čistě funkcionální (bez ohledu na to jestli je to "Pythonic").



> Mě se líbí explicitní použití funkcí map() a filter(), protože je to pro
> začátečníka čitelnější a pochopitelnější, než List Comprehension
>
> Tohle me zajima - ja mam presne opacnou zkusenost. Bavime se o
> zacatecnicich v programovani (s temi mam zkusenost ja), ci jen
> zacatecniky s pythonem, ale programatory?



Myslím si, že pro člověka, který vidí poprvé map a filter a List
Comprehension, je snažší najít si v dokumentaci co dělají funkce map a
filter a pochopit je samostatně. Protože to jsou dvě oddělené věci. Zatímco
když se použije List Comprehension kombinující map i filter v jednom
zápise, tak je tam toho na rozluštění a pochopení více. A taky ten List
Comprehension nejde snadno dohledat v dokumentaci, protože z kódu není
poznat, jak se to jmenuje (neobsahuje klíčová slova jako "map" či "filter").

Nějakou zásadnější osobní zkušenost s výukou nemám. Ale minimálně na škole
jsem se setkal s tím, že se úplní začátečníci učí nejdříve funkcionální
paradigma, tak by ten map a filter mělo být snadné pochopit pro kohokoliv.
Nicméně naučit se místo toho v Pythonu rovnou List Comprehension určitě
není na škodu.

Honza



> Honza Král
> E-Mail: honza.kral na gmail.com
> Phone:  +420 606 678585
>
>
> 2015-02-09 16:34 GMT+01:00 Pavel S <pavel na schon.cz>:
> > Jeste pokud bychom se chteli zbavit 'materializace seznamu uprostred',
> lze in-place pouzit itertools.ifilter a itertools.imap.
> >
> > Dne pondělí 9. února 2015 16:17:52 UTC+1 Pavel S napsal(a):
> >> Na pythonu je krasne, ze jedna a tataz vec lze udelat mnoha zpusoby a
> ja nabidnul jeden z nich:
> >>
> >> * nemeni vnitrni stav oproti reseni s pop()
> >> * nepouziva operator & na setu, cimz me nenuti zjistovat, co tento
> operator vlastne dela. (intersection je jasne...)
> >> * nepouziva list comprehension
> >> * je rozepsane do vice radku, primocare a jasne citelne
> > _______________________________________________
> > Python mailing list
> > python na py.cz
> > http://www.py.cz/mailman/listinfo/python
> >
> > Visit: http://www.py.cz
> _______________________________________________
> Python mailing list
> python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20150209/646e6119/attachment.html>


Další informace o konferenci Python