Re: [python] Seznamy

2015-02-13 Tema obsahu Vladimir Macek
On 13.2.2015 00:56, Radek Holý wrote:
> Když vidím map (nebo list comprehension), nečekám, že se bude dít
> něco zásadního kromě filtrování/zpracování dat.

Tohle je zajímavá poznámka. Programátor by skutečně neměl věci s
očekávanými vedlejšími efekty kompresit do konstruktů, ve kterých by je
jiní čtenáři nečekali. Netvrdím, že to je zrovna tento případ, záleží na citu.


>> Jednak jsem to zmiňoval jako rychlou ukázku C-G jakožto konstruktu
>> pro studenty (kde se navc netvoří profesionální kód), za druhé
>> mohu dostat všechny potřebné informace vč. stavových a za třetí...
>> kam se vám poděl EAFP (https://docs.python.org/2/glossary.html)?
>
> Tu poznámku o EAFP jsem nepochopil.

Že v Pythonu je obvyklý princip, aby program bez dotazů na podmínky jel,
dokud to neřachne. Např. v C se musí prgat úplně obráceně a velkou část
programu tam zabírají testy a ošetřování chyb. Libové maso se ztrácí. Měl
jsem zato, že mluvíš o nezájmu o návratovou hodnotu pro testování stavu
zpracování a nikoli jen získaných dat.


>> Děkuji za diskusi, štvete mě jen malinko. :-)
>
> Cílem určitě nebylo někoho štvát. Měl jsem pocit, že nabízím
> konstruktivní názor. Pokud to tak nebylo, omlouvám se.

To já se omlouvám všem. Měl jsem ten den asi nějakou rejpavou. :-)


-- 
:  Vladimir Macek  :  http://macek.sandbox.cz  :  +420 608 978 164
:  UNIX && Dev || Training  :  Python, Django  :  PGP key 97330EBD


___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-12 Tema obsahu Radek Holý
Dne 13. února 2015 0:55 Radek Holý  napsal(a):

>
>
> Dne 11. února 2015 10:08 Vladimir Macek  napsal(a):
>
> On 10.2.2015 20:50, Honza Král wrote:
>> > 2015-02-10 20:36 GMT+01:00 Radek Holý :
>> >> V Pythonu dělám skoro 9 let a pořád platí, že kdykoliv někde
>> >> narazím na "reduce", "map" apod. tak mě to vždy zdrží a chvíli mi
>> >> trvá, než pochopím o co jde. List comprehensions se mi čtou
>> >> snadněji - přirozeněji. Nehledě na to, že ty funkcionální
>> >> záležitosti jsou skoro vždy spojené s deklarací jinak zbytečných
>> >> funkcí se složitým významem, nebo ještě komplikovanějšími lambda
>> >> funkcemi. Každopádně je to prostě otázku vkusu/zvyku... Jedním z
>> >> problémů může pro mě být ta prefixová notace. Vypadá to jako Lisp
>> >> :-)
>>
>> Doufám, že se shodneme, že to je věc osobních preferencí a nebudeme si to
>> navzájem vyčítat. :-) Zajisté můžu považovat za elegantnější vytáhnout
>> filtrační nebo transformační logiku do extra funkce s komentáři a pak jí
>> předhodit do filter/map než to patlat do třířádkového C-G. Podotýkám pro
>> jistotu znovu, že používám jak filter/map + zřídka reduce, tak C-G, vždy
>> podle svého citu pro vhodnost. Snažím se dodržovat Zen.
>>
>> Kdykoli píšu \, trošku uvnitř umřu.
>>
>>
>> > Vidim to uplne stejne, proto jsem byl prekvapen kdyz tady slysim
>> > zastance filter/map/... Ja osobne se k nim skutecne uchyluji jen
>> > obcas kvuli vykonu a v situaci kdy je naprosto jasne, co to bude
>> > delat.
>>
>> To poslední negrokuju. :-) Jasné je snad v Pythonu vše, proto ho máme
>> rádi,
>> ne? :-)
>>
>>
>> >> Ještě mě zarazilo to "stáhneme 10 URL". S tím mám vždy osobní
>> >> problém. Jakmile někdo volá "map", aniž by ho zajímala návratová
>> >> hodnota volané funkce, považuji to za chybu. Nehledě na to, že v
>> >> Pythonu 3 "map" vrací iterátor, takže se kvůli tomu ještě typicky
>> >> "map" obaluje do "list"... V těchto případech vždy preferuji
>> >> klasický "for" cyklus. Ale opět je to jen můj názor.
>>
>> Dovoluji si i zde spíše nesouhlasit, zejména se slovem typicky.
>> "Přetypování" tohoto typu snad používáme až tehdy, kdy je to nutné, ne?
>> Pokud někde dostanu iterátor, je hromada případů, kdy se elegantně a
>> efektivně použije přímo.
>>
>>
> U toho přetypování jsem měl na mysli, když se map (nebo list
> comprehension) použije místo for cyklu, když se už dál nepracuje s
> návratovými hodnotami. Tehdy se (stále si trvám na) typicky map obaluje do
> listu, aby se ten výraz vyhodnotil. Jinak samozřejmě nění map potřeba
> obalovat do listu.
>
>
>>
>> > Naprosty souhlas, parkrat jsem videl volani map ci list
>> > comprehension bez zajmu o vysledek a take s tim mam problem - je to
>> > plytvani (zbytecne se alokuje list) a je to hure citelne.
>>
>> Nedochází mi, kde jste vzali, že spojuju příklad se stažením 10 URL s
>> map(), psal jsem zrovna, že jsem na tom příkladu ilustroval C-G. Ale i na
>> map() se to dá použít
>>
>
> Moje chyba. Špatně jsem si to zapamatoval. Nicméně moje poznámka se týkala
> jak list comprehension tak map. V obou případech mi toto použití připadá
> špatné.
>
>
>> map(urllib.urlopen, ('http://www.seznam.cz', 'http://google.com',
>> 'http://ibm.com'))
>>
>> Též nerozumím tomu, jak jste vyvodili, že se jak v tomto případu, tak v
>> tom
>> mnou prve zmíněném s C-G nezajímám o návratovou hodnotu.
>>
>
> Nenapadlo mě, k čemu by návratová hodnota mohla být dobrá při stahování
> souboru. Nevěděl jsem, jako funkci máš na mysli, ale představoval jsem si,
> že pokud jde o stahování souboru, bude to fce, které zadám url a cestu na
> disku a ona soubor stáhne, nebo vyhodí výjimku. V takové případě není
> potřeba žádná návratová hodnota. Pokud nějaká potřeba je, tak je v tom
> případě vše v pořádku. I když tedy stejně preferuji volání jakýchkoliv
> funkcí s vedlejším efektem (nebo jaký je správný překlad) ve for cyklu.
> Když vydím map (nebo list comprehension), nečekám, že se bude dít něco
> zásadního kromě filtrování/spracování dat.
>

Fuj, to Y jakože nikdo neviděl, ano? :)


> Jednak jsem to zmiňoval jako rychlou ukázku C-G jakožto konstruktu pro
>> studenty (kde se navc netvoří profesionální kód), za druhé mohu dostat
>> všechny potřebné informace vč. stavových a za třetí... kam se vám poděl
>> EAFP (https://docs.python.org/2/glossary.html)?
>>
>>
> Tu poznámku o EAFP jsem nepochopil.
>
>
>>
>> > Mimochodem v python3 uz reduce ani neni builtin (byl presunuty do
>> > functools) a i Guido to vidi obdobne:
>> > http://www.artima.com/weblogs/viewpost.jsp?thread=98196
>>
>> S tím souhlasím, nic proti. Sám jsem psal, že ji používám zřídka.
>>
>> Děkuji za diskusi, štvete mě jen malinko. :-)
>>
>
> Cílem určitě nebylo někoho štvát. Měl jsem pocit, že nabízím konstruktivní
> názor. Pokud to tak nebylo, omlouvám se.
> --
> Radek
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Seznamy

2015-02-12 Tema obsahu Radek Holý
Dne 13. února 2015 0:55 Radek Holý  napsal(a):

>
>
> Dne 11. února 2015 10:08 Vladimir Macek  napsal(a):
>
> On 10.2.2015 20:50, Honza Král wrote:
>> > 2015-02-10 20:36 GMT+01:00 Radek Holý :
>> >> V Pythonu dělám skoro 9 let a pořád platí, že kdykoliv někde
>> >> narazím na "reduce", "map" apod. tak mě to vždy zdrží a chvíli mi
>> >> trvá, než pochopím o co jde. List comprehensions se mi čtou
>> >> snadněji - přirozeněji. Nehledě na to, že ty funkcionální
>> >> záležitosti jsou skoro vždy spojené s deklarací jinak zbytečných
>> >> funkcí se složitým významem, nebo ještě komplikovanějšími lambda
>> >> funkcemi. Každopádně je to prostě otázku vkusu/zvyku... Jedním z
>> >> problémů může pro mě být ta prefixová notace. Vypadá to jako Lisp
>> >> :-)
>>
>> Doufám, že se shodneme, že to je věc osobních preferencí a nebudeme si to
>> navzájem vyčítat. :-) Zajisté můžu považovat za elegantnější vytáhnout
>> filtrační nebo transformační logiku do extra funkce s komentáři a pak jí
>> předhodit do filter/map než to patlat do třířádkového C-G. Podotýkám pro
>> jistotu znovu, že používám jak filter/map + zřídka reduce, tak C-G, vždy
>> podle svého citu pro vhodnost. Snažím se dodržovat Zen.
>>
>> Kdykoli píšu \, trošku uvnitř umřu.
>>
>>
>> > Vidim to uplne stejne, proto jsem byl prekvapen kdyz tady slysim
>> > zastance filter/map/... Ja osobne se k nim skutecne uchyluji jen
>> > obcas kvuli vykonu a v situaci kdy je naprosto jasne, co to bude
>> > delat.
>>
>> To poslední negrokuju. :-) Jasné je snad v Pythonu vše, proto ho máme
>> rádi,
>> ne? :-)
>>
>>
>> >> Ještě mě zarazilo to "stáhneme 10 URL". S tím mám vždy osobní
>> >> problém. Jakmile někdo volá "map", aniž by ho zajímala návratová
>> >> hodnota volané funkce, považuji to za chybu. Nehledě na to, že v
>> >> Pythonu 3 "map" vrací iterátor, takže se kvůli tomu ještě typicky
>> >> "map" obaluje do "list"... V těchto případech vždy preferuji
>> >> klasický "for" cyklus. Ale opět je to jen můj názor.
>>
>> Dovoluji si i zde spíše nesouhlasit, zejména se slovem typicky.
>> "Přetypování" tohoto typu snad používáme až tehdy, kdy je to nutné, ne?
>> Pokud někde dostanu iterátor, je hromada případů, kdy se elegantně a
>> efektivně použije přímo.
>>
>>
> U toho přetypování jsem měl na mysli, když se map (nebo list
> comprehension) použije místo for cyklu, když se už dál nepracuje s
> návratovými hodnotami. Tehdy se (stále si trvám na) typicky map obaluje do
> listu, aby se ten výraz vyhodnotil. Jinak samozřejmě nění map potřeba
> obalovat do listu.
>

List comprehension samozřejmě ne. Příště si to po sobě přečtu, než to
odešlu, slibuju.


>
>> > Naprosty souhlas, parkrat jsem videl volani map ci list
>> > comprehension bez zajmu o vysledek a take s tim mam problem - je to
>> > plytvani (zbytecne se alokuje list) a je to hure citelne.
>>
>> Nedochází mi, kde jste vzali, že spojuju příklad se stažením 10 URL s
>> map(), psal jsem zrovna, že jsem na tom příkladu ilustroval C-G. Ale i na
>> map() se to dá použít
>>
>
> Moje chyba. Špatně jsem si to zapamatoval. Nicméně moje poznámka se týkala
> jak list comprehension tak map. V obou případech mi toto použití připadá
> špatné.
>
>
>> map(urllib.urlopen, ('http://www.seznam.cz', 'http://google.com',
>> 'http://ibm.com'))
>>
>> Též nerozumím tomu, jak jste vyvodili, že se jak v tomto případu, tak v
>> tom
>> mnou prve zmíněném s C-G nezajímám o návratovou hodnotu.
>>
>
> Nenapadlo mě, k čemu by návratová hodnota mohla být dobrá při stahování
> souboru. Nevěděl jsem, jako funkci máš na mysli, ale představoval jsem si,
> že pokud jde o stahování souboru, bude to fce, které zadám url a cestu na
> disku a ona soubor stáhne, nebo vyhodí výjimku. V takové případě není
> potřeba žádná návratová hodnota. Pokud nějaká potřeba je, tak je v tom
> případě vše v pořádku. I když tedy stejně preferuji volání jakýchkoliv
> funkcí s vedlejším efektem (nebo jaký je správný překlad) ve for cyklu.
> Když vydím map (nebo list comprehension), nečekám, že se bude dít něco
> zásadního kromě filtrování/spracování dat.
>
>
>> Jednak jsem to zmiňoval jako rychlou ukázku C-G jakožto konstruktu pro
>> studenty (kde se navc netvoří profesionální kód), za druhé mohu dostat
>> všechny potřebné informace vč. stavových a za třetí... kam se vám poděl
>> EAFP (https://docs.python.org/2/glossary.html)?
>>
>>
> Tu poznámku o EAFP jsem nepochopil.
>
>
>>
>> > Mimochodem v python3 uz reduce ani neni builtin (byl presunuty do
>> > functools) a i Guido to vidi obdobne:
>> > http://www.artima.com/weblogs/viewpost.jsp?thread=98196
>>
>> S tím souhlasím, nic proti. Sám jsem psal, že ji používám zřídka.
>>
>> Děkuji za diskusi, štvete mě jen malinko. :-)
>>
>
> Cílem určitě nebylo někoho štvát. Měl jsem pocit, že nabízím konstruktivní
> názor. Pokud to tak nebylo, omlouvám se.
> --
> Radek
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Seznamy

2015-02-12 Tema obsahu Radek Holý
Dne 11. února 2015 10:08 Vladimir Macek  napsal(a):

> On 10.2.2015 20:50, Honza Král wrote:
> > 2015-02-10 20:36 GMT+01:00 Radek Holý :
> >> V Pythonu dělám skoro 9 let a pořád platí, že kdykoliv někde
> >> narazím na "reduce", "map" apod. tak mě to vždy zdrží a chvíli mi
> >> trvá, než pochopím o co jde. List comprehensions se mi čtou
> >> snadněji - přirozeněji. Nehledě na to, že ty funkcionální
> >> záležitosti jsou skoro vždy spojené s deklarací jinak zbytečných
> >> funkcí se složitým významem, nebo ještě komplikovanějšími lambda
> >> funkcemi. Každopádně je to prostě otázku vkusu/zvyku... Jedním z
> >> problémů může pro mě být ta prefixová notace. Vypadá to jako Lisp
> >> :-)
>
> Doufám, že se shodneme, že to je věc osobních preferencí a nebudeme si to
> navzájem vyčítat. :-) Zajisté můžu považovat za elegantnější vytáhnout
> filtrační nebo transformační logiku do extra funkce s komentáři a pak jí
> předhodit do filter/map než to patlat do třířádkového C-G. Podotýkám pro
> jistotu znovu, že používám jak filter/map + zřídka reduce, tak C-G, vždy
> podle svého citu pro vhodnost. Snažím se dodržovat Zen.
>
> Kdykoli píšu \, trošku uvnitř umřu.
>
>
> > Vidim to uplne stejne, proto jsem byl prekvapen kdyz tady slysim
> > zastance filter/map/... Ja osobne se k nim skutecne uchyluji jen
> > obcas kvuli vykonu a v situaci kdy je naprosto jasne, co to bude
> > delat.
>
> To poslední negrokuju. :-) Jasné je snad v Pythonu vše, proto ho máme rádi,
> ne? :-)
>
>
> >> Ještě mě zarazilo to "stáhneme 10 URL". S tím mám vždy osobní
> >> problém. Jakmile někdo volá "map", aniž by ho zajímala návratová
> >> hodnota volané funkce, považuji to za chybu. Nehledě na to, že v
> >> Pythonu 3 "map" vrací iterátor, takže se kvůli tomu ještě typicky
> >> "map" obaluje do "list"... V těchto případech vždy preferuji
> >> klasický "for" cyklus. Ale opět je to jen můj názor.
>
> Dovoluji si i zde spíše nesouhlasit, zejména se slovem typicky.
> "Přetypování" tohoto typu snad používáme až tehdy, kdy je to nutné, ne?
> Pokud někde dostanu iterátor, je hromada případů, kdy se elegantně a
> efektivně použije přímo.
>
>
U toho přetypování jsem měl na mysli, když se map (nebo list comprehension)
použije místo for cyklu, když se už dál nepracuje s návratovými hodnotami.
Tehdy se (stále si trvám na) typicky map obaluje do listu, aby se ten výraz
vyhodnotil. Jinak samozřejmě nění map potřeba obalovat do listu.


>
> > Naprosty souhlas, parkrat jsem videl volani map ci list
> > comprehension bez zajmu o vysledek a take s tim mam problem - je to
> > plytvani (zbytecne se alokuje list) a je to hure citelne.
>
> Nedochází mi, kde jste vzali, že spojuju příklad se stažením 10 URL s
> map(), psal jsem zrovna, že jsem na tom příkladu ilustroval C-G. Ale i na
> map() se to dá použít
>

Moje chyba. Špatně jsem si to zapamatoval. Nicméně moje poznámka se týkala
jak list comprehension tak map. V obou případech mi toto použití připadá
špatné.


> map(urllib.urlopen, ('http://www.seznam.cz', 'http://google.com',
> 'http://ibm.com'))
>
> Též nerozumím tomu, jak jste vyvodili, že se jak v tomto případu, tak v tom
> mnou prve zmíněném s C-G nezajímám o návratovou hodnotu.
>

Nenapadlo mě, k čemu by návratová hodnota mohla být dobrá při stahování
souboru. Nevěděl jsem, jako funkci máš na mysli, ale představoval jsem si,
že pokud jde o stahování souboru, bude to fce, které zadám url a cestu na
disku a ona soubor stáhne, nebo vyhodí výjimku. V takové případě není
potřeba žádná návratová hodnota. Pokud nějaká potřeba je, tak je v tom
případě vše v pořádku. I když tedy stejně preferuji volání jakýchkoliv
funkcí s vedlejším efektem (nebo jaký je správný překlad) ve for cyklu.
Když vydím map (nebo list comprehension), nečekám, že se bude dít něco
zásadního kromě filtrování/spracování dat.


> Jednak jsem to zmiňoval jako rychlou ukázku C-G jakožto konstruktu pro
> studenty (kde se navc netvoří profesionální kód), za druhé mohu dostat
> všechny potřebné informace vč. stavových a za třetí... kam se vám poděl
> EAFP (https://docs.python.org/2/glossary.html)?
>
>
Tu poznámku o EAFP jsem nepochopil.


>
> > Mimochodem v python3 uz reduce ani neni builtin (byl presunuty do
> > functools) a i Guido to vidi obdobne:
> > http://www.artima.com/weblogs/viewpost.jsp?thread=98196
>
> S tím souhlasím, nic proti. Sám jsem psal, že ji používám zřídka.
>
> Děkuji za diskusi, štvete mě jen malinko. :-)
>

Cílem určitě nebylo někoho štvát. Měl jsem pocit, že nabízím konstruktivní
názor. Pokud to tak nebylo, omlouvám se.
-- 
Radek
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Seznamy

2015-02-11 Tema obsahu Marcus Scalpere
Dne pátek 6. února 2015 20:10:15 UTC+1 Marcus Scalpere napsal(a):
> Pěkný večer vinšuji,
> mám několik seznamů a potřebuji zjistit, které jsou a nejsou prázdné (to bych 
> ještě dal) a pokud některé prázdne nejsou, tak je projít a pokud jsou některé 
> hodnoty ve VŠECH, tak je uložit.
> Něco jako:
> list_a = []
> list_b = [x, y, z]
> list_c = [x, y]
> .
> .
> .
> list_vysledny = [x, y]
> 
> Snad jsem se vyjádřil jasně a srozumitelně. Děkuji mnohokráte

Mnohokráte děkuji pánové, jsem netušil, že se z toho stane takhle rozsáhlá 
diskuze (použil jsem hned první řešení, tudíž se velice omlouvám ostatním, 
"nevyužitým"), nechci vypadat nějak nevděčně, snažím se pochopit vše, ale 
použít mohu jen jednu. Bohužel, nepředpokládám, že by moje tvorba byla jakkoli 
více studovaná a používá, tak si ani nemusím zas až tak dělat starosti s 
"elegantností" kodu. Vlastně bych už mohl napsat něco s názvem "Postřehy 
začátečníka v pythonu s psaním nezačátečnický app"...
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-11 Tema obsahu Vladimir Macek
On 11.2.2015 10:29, Petr Viktorin wrote:
>> Kdykoli píšu \, trošku uvnitř umřu.
>
> C/G ale zpětná lomítka nepotřebují, protože jsou vždycky v
> závorkách.

To zajisté vím. Nebylo by prosím možné vnímat poněkud velkoryseji a
nedoslovně? :-)

Šlo o obecné zvolání, že preferuju jednořádkové konstrukty, složitější věci
oddělené do funkcí a metod, dráždí mě skoro každé odsazení, takže se
vyhýbám i try: ... except: a pohodový flow se snažím zajistit jinak...

Není to zde ale důležité, osobní věc.

Vl.

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-11 Tema obsahu Jan Bednařík
Já bych snad jen dodal, že obrovská síla Pythonu je v tom, že je
multiparadigmatický, a umožňuje volit objektový, funkcionánlní, či
procedurální přístup pro řešení konkrétních problémů. A myslím si že
dobrého programátora nedělá to, že dokáže všechno naprogramovat v jednom
oblíbeném paradigmatu, ale že dokáže volit to nejelegantnější řešení pro
daný problém.

Není problém pokud nevím, jak něco vyřešit. Problém je, když znám jen jedno
řešení.

Honza

2015-02-11 10:08 GMT+01:00 Vladimir Macek :

> On 10.2.2015 20:50, Honza Král wrote:
> > 2015-02-10 20:36 GMT+01:00 Radek Holý :
> >> V Pythonu dělám skoro 9 let a pořád platí, že kdykoliv někde
> >> narazím na "reduce", "map" apod. tak mě to vždy zdrží a chvíli mi
> >> trvá, než pochopím o co jde. List comprehensions se mi čtou
> >> snadněji - přirozeněji. Nehledě na to, že ty funkcionální
> >> záležitosti jsou skoro vždy spojené s deklarací jinak zbytečných
> >> funkcí se složitým významem, nebo ještě komplikovanějšími lambda
> >> funkcemi. Každopádně je to prostě otázku vkusu/zvyku... Jedním z
> >> problémů může pro mě být ta prefixová notace. Vypadá to jako Lisp
> >> :-)
>
> Doufám, že se shodneme, že to je věc osobních preferencí a nebudeme si to
> navzájem vyčítat. :-) Zajisté můžu považovat za elegantnější vytáhnout
> filtrační nebo transformační logiku do extra funkce s komentáři a pak jí
> předhodit do filter/map než to patlat do třířádkového C-G. Podotýkám pro
> jistotu znovu, že používám jak filter/map + zřídka reduce, tak C-G, vždy
> podle svého citu pro vhodnost. Snažím se dodržovat Zen.
>
> Kdykoli píšu \, trošku uvnitř umřu.
>
>
> > Vidim to uplne stejne, proto jsem byl prekvapen kdyz tady slysim
> > zastance filter/map/... Ja osobne se k nim skutecne uchyluji jen
> > obcas kvuli vykonu a v situaci kdy je naprosto jasne, co to bude
> > delat.
>
> To poslední negrokuju. :-) Jasné je snad v Pythonu vše, proto ho máme rádi,
> ne? :-)
>
>
> >> Ještě mě zarazilo to "stáhneme 10 URL". S tím mám vždy osobní
> >> problém. Jakmile někdo volá "map", aniž by ho zajímala návratová
> >> hodnota volané funkce, považuji to za chybu. Nehledě na to, že v
> >> Pythonu 3 "map" vrací iterátor, takže se kvůli tomu ještě typicky
> >> "map" obaluje do "list"... V těchto případech vždy preferuji
> >> klasický "for" cyklus. Ale opět je to jen můj názor.
>
> Dovoluji si i zde spíše nesouhlasit, zejména se slovem typicky.
> "Přetypování" tohoto typu snad používáme až tehdy, kdy je to nutné, ne?
> Pokud někde dostanu iterátor, je hromada případů, kdy se elegantně a
> efektivně použije přímo.
>
>
> > Naprosty souhlas, parkrat jsem videl volani map ci list
> > comprehension bez zajmu o vysledek a take s tim mam problem - je to
> > plytvani (zbytecne se alokuje list) a je to hure citelne.
>
> Nedochází mi, kde jste vzali, že spojuju příklad se stažením 10 URL s
> map(), psal jsem zrovna, že jsem na tom příkladu ilustroval C-G. Ale i na
> map() se to dá použít
>
> map(urllib.urlopen, ('http://www.seznam.cz', 'http://google.com',
> 'http://ibm.com'))
>
> Též nerozumím tomu, jak jste vyvodili, že se jak v tomto případu, tak v tom
> mnou prve zmíněném s C-G nezajímám o návratovou hodnotu.
>
> Jednak jsem to zmiňoval jako rychlou ukázku C-G jakožto konstruktu pro
> studenty (kde se navc netvoří profesionální kód), za druhé mohu dostat
> všechny potřebné informace vč. stavových a za třetí... kam se vám poděl
> EAFP (https://docs.python.org/2/glossary.html)?
>
>
> > Mimochodem v python3 uz reduce ani neni builtin (byl presunuty do
> > functools) a i Guido to vidi obdobne:
> > http://www.artima.com/weblogs/viewpost.jsp?thread=98196
>
> S tím souhlasím, nic proti. Sám jsem psal, že ji používám zřídka.
>
> Děkuji za diskusi, štvete mě jen malinko. :-)
>
> Vl.
>
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Seznamy

2015-02-11 Tema obsahu Petr Viktorin
2015-02-11 10:08 GMT+01:00 Vladimir Macek :
> On 10.2.2015 20:50, Honza Král wrote:
>> 2015-02-10 20:36 GMT+01:00 Radek Holý :
>>> V Pythonu dělám skoro 9 let a pořád platí, že kdykoliv někde
>>> narazím na "reduce", "map" apod. tak mě to vždy zdrží a chvíli mi
>>> trvá, než pochopím o co jde. List comprehensions se mi čtou
>>> snadněji - přirozeněji. Nehledě na to, že ty funkcionální
>>> záležitosti jsou skoro vždy spojené s deklarací jinak zbytečných
>>> funkcí se složitým významem, nebo ještě komplikovanějšími lambda
>>> funkcemi. Každopádně je to prostě otázku vkusu/zvyku... Jedním z
>>> problémů může pro mě být ta prefixová notace. Vypadá to jako Lisp
>>> :-)
>
> Doufám, že se shodneme, že to je věc osobních preferencí a nebudeme si to
> navzájem vyčítat. :-) Zajisté můžu považovat za elegantnější vytáhnout
> filtrační nebo transformační logiku do extra funkce s komentáři a pak jí
> předhodit do filter/map než to patlat do třířádkového C-G. Podotýkám pro
> jistotu znovu, že používám jak filter/map + zřídka reduce, tak C-G, vždy
> podle svého citu pro vhodnost. Snažím se dodržovat Zen.
>
> Kdykoli píšu \, trošku uvnitř umřu.

C/G ale zpětná lomítka nepotřebují, protože jsou vždycky v závorkách.
A i ty třířádkové můžou být stručné a přehledné – někdy přehlednější
než to všechno cpát na jeden řádek.

names = ','.join(it.name
 for it in items
 if it.enabled)

Vytáhnutí filtrační/transformační logiky do vlastní funkce je
samozřejmě možné i tady.
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Seznamy

2015-02-11 Tema obsahu Vladimir Macek
On 10.2.2015 20:50, Honza Král wrote:
> 2015-02-10 20:36 GMT+01:00 Radek Holý :
>> V Pythonu dělám skoro 9 let a pořád platí, že kdykoliv někde
>> narazím na "reduce", "map" apod. tak mě to vždy zdrží a chvíli mi
>> trvá, než pochopím o co jde. List comprehensions se mi čtou
>> snadněji - přirozeněji. Nehledě na to, že ty funkcionální
>> záležitosti jsou skoro vždy spojené s deklarací jinak zbytečných
>> funkcí se složitým významem, nebo ještě komplikovanějšími lambda
>> funkcemi. Každopádně je to prostě otázku vkusu/zvyku... Jedním z
>> problémů může pro mě být ta prefixová notace. Vypadá to jako Lisp
>> :-)

Doufám, že se shodneme, že to je věc osobních preferencí a nebudeme si to
navzájem vyčítat. :-) Zajisté můžu považovat za elegantnější vytáhnout
filtrační nebo transformační logiku do extra funkce s komentáři a pak jí
předhodit do filter/map než to patlat do třířádkového C-G. Podotýkám pro
jistotu znovu, že používám jak filter/map + zřídka reduce, tak C-G, vždy
podle svého citu pro vhodnost. Snažím se dodržovat Zen.

Kdykoli píšu \, trošku uvnitř umřu.


> Vidim to uplne stejne, proto jsem byl prekvapen kdyz tady slysim
> zastance filter/map/... Ja osobne se k nim skutecne uchyluji jen
> obcas kvuli vykonu a v situaci kdy je naprosto jasne, co to bude
> delat.

To poslední negrokuju. :-) Jasné je snad v Pythonu vše, proto ho máme rádi,
ne? :-)


>> Ještě mě zarazilo to "stáhneme 10 URL". S tím mám vždy osobní
>> problém. Jakmile někdo volá "map", aniž by ho zajímala návratová
>> hodnota volané funkce, považuji to za chybu. Nehledě na to, že v
>> Pythonu 3 "map" vrací iterátor, takže se kvůli tomu ještě typicky
>> "map" obaluje do "list"... V těchto případech vždy preferuji
>> klasický "for" cyklus. Ale opět je to jen můj názor.

Dovoluji si i zde spíše nesouhlasit, zejména se slovem typicky.
"Přetypování" tohoto typu snad používáme až tehdy, kdy je to nutné, ne?
Pokud někde dostanu iterátor, je hromada případů, kdy se elegantně a
efektivně použije přímo.


> Naprosty souhlas, parkrat jsem videl volani map ci list
> comprehension bez zajmu o vysledek a take s tim mam problem - je to
> plytvani (zbytecne se alokuje list) a je to hure citelne.

Nedochází mi, kde jste vzali, že spojuju příklad se stažením 10 URL s
map(), psal jsem zrovna, že jsem na tom příkladu ilustroval C-G. Ale i na
map() se to dá použít

map(urllib.urlopen, ('http://www.seznam.cz', 'http://google.com',
'http://ibm.com'))

Též nerozumím tomu, jak jste vyvodili, že se jak v tomto případu, tak v tom
mnou prve zmíněném s C-G nezajímám o návratovou hodnotu.

Jednak jsem to zmiňoval jako rychlou ukázku C-G jakožto konstruktu pro
studenty (kde se navc netvoří profesionální kód), za druhé mohu dostat
všechny potřebné informace vč. stavových a za třetí... kam se vám poděl
EAFP (https://docs.python.org/2/glossary.html)?


> Mimochodem v python3 uz reduce ani neni builtin (byl presunuty do
> functools) a i Guido to vidi obdobne:
> http://www.artima.com/weblogs/viewpost.jsp?thread=98196

S tím souhlasím, nic proti. Sám jsem psal, že ji používám zřídka.

Děkuji za diskusi, štvete mě jen malinko. :-)

Vl.

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-10 Tema obsahu Honza Král
2015-02-10 20:36 GMT+01:00 Radek Holý :
>
> Dne 10. února 2015 10:18 Vladimir Macek  napsal(a):
>
>> On 9.2.2015 21:50, Jan Bednařík wrote:
>> >
>> > > 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
>>
>> Přispěju k diskusi Honzů.
>>
>> Nikdy jsem o tom vážně nepřemýšlel, ale asi mám ve svém kódu sklony vybrat
>> to, co je méně ukecané. Comprehension a Gen. exp. (dále C-G) někdy
>> potřebují až třikrát zopakovat řídicí proměnnou, zatímco filter si vystačí
>> s žádnou nebo třeba jedinou zmínkou. Takže někdy preferuju map a filter.
>> Reduce přijde ke slovu zřídka, což je asi přirozené.
>>
>> Souhlasím s již dříve popsanou výhodou jednoduchosti pochopení
>> funkcionálních konstruktů, které dělají jednu věc, zatímco C-G jich
>> kombinují několik. Je to švýcarský nůž a může pythonistům připadat hrozně
>> šikovný. Ale mě se ne vždy líbí ta ukecanost (řádek je dlouhý, často
>> zalomený) a překombinovanost.
>>
>> Nemám to exaktně potvrzeno hlasováním, ale když na školeních Pythonu učím,
>> necítím z posluchačů zvláštní nadšení, když se probírá C-G. Některé udiví,
>> co se tím dá dělat, když vyrobíme mocniny lichých čísel nebo stáhneme 10
>> URL. Ale možná je to tak, že to je pro ně další nástroj, který je unikátní
>> a tudíž stojí energii navíc se ho učit.
>>
>> V.
>
>
> Tak když už jste se v tom rozhodli původnímu tazateli udělat takový guláš,
> tak já se taky přidám :-) V Pythonu dělám skoro 9 let a pořád platí, že
> kdykoliv někde narazím na "reduce", "map" apod. tak mě to vždy zdrží a
> chvíli mi trvá, než pochopím o co jde. List comprehensions se mi čtou
> snadněji - přirozeněji. Nehledě na to, že ty funkcionální záležitosti jsou
> skoro vždy spojené s deklarací jinak zbytečných funkcí se složitým významem,
> nebo ještě komplikovanějšími lambda funkcemi. Každopádně je to prostě otázku
> vkusu/zvyku... Jedním z problémů může pro mě být ta prefixová notace. Vypadá
> to jako Lisp :-)

Vidim to uplne stejne, proto jsem byl prekvapen kdyz tady slysim
zastance filter/map/... Ja osobne se k nim skutecne uchyluji jen obcas
kvuli vykonu a v situaci kdy je naprosto jasne, co to bude delat.

> Ještě mě zarazilo to "stáhneme 10 URL". S tím mám vždy osobní problém.
> Jakmile někdo volá "map", aniž by ho zajímala návratová hodnota volané
> funkce, považuji to za chybu. Nehledě na to, že v Pythonu 3 "map" vrací
> iterátor, takže se kvůli tomu ještě typicky "map" obaluje do "list"... V
> těchto případech vždy preferuji klasický "for" cyklus. Ale opět je to jen
> můj názor.

Naprosty souhlas, parkrat jsem videl volani map ci list comprehension
bez zajmu o vysledek a take s tim mam problem - je to plytvani
(zbytecne se alokuje list) a je to hure citelne.

Mimochodem v python3 uz reduce ani neni builtin (byl presunuty do
functools) a i Guido to vidi obdobne:
http://www.artima.com/weblogs/viewpost.jsp?thread=98196


> --
> Radek
>
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-10 Tema obsahu Radek Holý
Dne 10. února 2015 10:18 Vladimir Macek  napsal(a):

> On 9.2.2015 21:50, Jan Bednařík wrote:
> >
> > > 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
>
> Přispěju k diskusi Honzů.
>
> Nikdy jsem o tom vážně nepřemýšlel, ale asi mám ve svém kódu sklony vybrat
> to, co je méně ukecané. Comprehension a Gen. exp. (dále C-G) někdy
> potřebují až třikrát zopakovat řídicí proměnnou, zatímco filter si vystačí
> s žádnou nebo třeba jedinou zmínkou. Takže někdy preferuju map a filter.
> Reduce přijde ke slovu zřídka, což je asi přirozené.
>
> Souhlasím s již dříve popsanou výhodou jednoduchosti pochopení
> funkcionálních konstruktů, které dělají jednu věc, zatímco C-G jich
> kombinují několik. Je to švýcarský nůž a může pythonistům připadat hrozně
> šikovný. Ale mě se ne vždy líbí ta ukecanost (řádek je dlouhý, často
> zalomený) a překombinovanost.
>
> Nemám to exaktně potvrzeno hlasováním, ale když na školeních Pythonu učím,
> necítím z posluchačů zvláštní nadšení, když se probírá C-G. Některé udiví,
> co se tím dá dělat, když vyrobíme mocniny lichých čísel nebo stáhneme 10
> URL. Ale možná je to tak, že to je pro ně další nástroj, který je unikátní
> a tudíž stojí energii navíc se ho učit.
>
> V.
>

Tak když už jste se v tom rozhodli původnímu tazateli udělat takový guláš,
tak já se taky přidám :-) V Pythonu dělám skoro 9 let a pořád platí, že
kdykoliv někde narazím na "reduce", "map" apod. tak mě to vždy zdrží a
chvíli mi trvá, než pochopím o co jde. List comprehensions se mi čtou
snadněji - přirozeněji. Nehledě na to, že ty funkcionální záležitosti jsou
skoro vždy spojené s deklarací jinak zbytečných funkcí se složitým
významem, nebo ještě komplikovanějšími lambda funkcemi. Každopádně je to
prostě otázku vkusu/zvyku... Jedním z problémů může pro mě být ta prefixová
notace. Vypadá to jako Lisp :-)

Ještě mě zarazilo to "stáhneme 10 URL". S tím mám vždy osobní problém.
Jakmile někdo volá "map", aniž by ho zajímala návratová hodnota volané
funkce, považuji to za chybu. Nehledě na to, že v Pythonu 3 "map" vrací
iterátor, takže se kvůli tomu ještě typicky "map" obaluje do "list"... V
těchto případech vždy preferuji klasický "for" cyklus. Ale opět je to jen
můj názor.
-- 
Radek
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Seznamy

2015-02-10 Tema obsahu Vladimir Macek
On 9.2.2015 21:50, Jan Bednařík wrote:
>
> > 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

Přispěju k diskusi Honzů.

Nikdy jsem o tom vážně nepřemýšlel, ale asi mám ve svém kódu sklony vybrat
to, co je méně ukecané. Comprehension a Gen. exp. (dále C-G) někdy
potřebují až třikrát zopakovat řídicí proměnnou, zatímco filter si vystačí
s žádnou nebo třeba jedinou zmínkou. Takže někdy preferuju map a filter.
Reduce přijde ke slovu zřídka, což je asi přirozené.

Souhlasím s již dříve popsanou výhodou jednoduchosti pochopení
funkcionálních konstruktů, které dělají jednu věc, zatímco C-G jich
kombinují několik. Je to švýcarský nůž a může pythonistům připadat hrozně
šikovný. Ale mě se ne vždy líbí ta ukecanost (řádek je dlouhý, často
zalomený) a překombinovanost.

Nemám to exaktně potvrzeno hlasováním, ale když na školeních Pythonu učím,
necítím z posluchačů zvláštní nadšení, když se probírá C-G. Některé udiví,
co se tím dá dělat, když vyrobíme mocniny lichých čísel nebo stáhneme 10
URL. Ale možná je to tak, že to je pro ně další nástroj, který je unikátní
a tudíž stojí energii navíc se ho učit.

V.

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-09 Tema obsahu Jan Bednařík
2015-02-09 16:35 GMT+01:00 Honza Král :

> 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.k...@gmail.com
> Phone:  +420 606 678585
>
>
> 2015-02-09 16:34 GMT+01:00 Pavel S :
> > 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@py.cz
> > http://www.py.cz/mailman/listinfo/python
> >
> > Visit: http://www.py.cz
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Seznamy

2015-02-09 Tema obsahu Honza Král
ne, o tom jsem nemluvil, predpokladam python 3 :)

Materializuje se kvuli predani do intersection - viz operator '*'
Honza Král
E-Mail: honza.k...@gmail.com
Phone:  +420 606 678585


2015-02-09 16:34 GMT+01:00 Pavel S :
> 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@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-09 Tema obsahu Pavel S
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@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-09 Tema obsahu Honza Král
* nemeni vnitrni stav oproti reseni s pop()

prave - tohle mi nedava prilis smysl. Vnitrne je vse stejne prave -
obe reseni vytvareji list ci tuple tech mnozin a je to jen mezikrok,
nejsou to zadna data ktera jsou predavana zvenku, nebo maji nejaky
vyznam. Ptal jsem se proto (a nechci prudit, skutecne me to zajima) v
cem je ta vyhoda.

To same u list comprehension (generator expression v tomto pripade
abychom byli 100% presni) - drtive vetsine lidi se kterymi jsem
mluvil, at uz se jednalo o naproste zacatecniky nebo velmi pokrocile
programatosky, prijdou mnohem citelnejsi prave list comprehensions nez
map/filter/reduce. A i ja to tak mam - map a spol pouzivam jen kvuli
optimalizacim ktere nabizeji. Prekvapuje me, ze tady slysim z nekolika
stran jiny nazor a zajima me, cim to je.

List comprehension je prave jedna z veci co se, z mych zkusenosti,
zacatecnikum na Pythonu tak libi - je jasne videt co to dela, da se to
precist a krasne se to mapuje na matematicke zapisy na ktere jsou
mnozi zvykli.

Diky za zajimavou diskuzi :)
Honza Král
E-Mail: honza.k...@gmail.com
Phone:  +420 606 678585


2015-02-09 16:17 GMT+01:00 Pavel S :
> 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@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-09 Tema obsahu Pavel S
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@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-09 Tema obsahu Honza Král
> 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?

Diky

Jinak samozrejme souhlas s dalsimi body, jen je, dle meho, potreba
dbat na to, aby kod byl citelny - casto je lepsi mit mene efektivni
implementaci, ktera je na prvni pohled zrejma.
Honza Král
E-Mail: honza.k...@gmail.com
Phone:  +420 606 678585


2015-02-09 15:33 GMT+01:00 Jan Bednařík :
> 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, kde si ty
> funkce musí domyslet. Nicméně List Comprehension je v Pythonu idiomatické
> řešení, a čím dříve ho začátečník pochopí a naučí se ho používat, tím lépe.
>
> Myslím si ale, že re-implementovat funkci reduce() vlastním for cyklem, není
> úplně šťastné řešení. Tam kde to jde bych se držel hotových nástrojů ze
> standardní knihovny. V tomhle případě je ale set.intersection() lepší volba
> než reduce(and_, ...).
>
>
> Každopádně asi všechna navržená řešení nefungují, protože nepočítají s
> variantou, že budou všechny vstupní seznamy prázdné. Já bych to řešil takto:
>
> sets = [set(l) for l in (list_a, list_b, list_c) if l]
> result = list(set.intersection(*sets)) if sets else []
>
> Honza
>
> 2015-02-09 14:21 GMT+01:00 Honza Král :
>>
>> Je fajn, ze davas funkcionalni reseni, ale kdyz uz to napises mozna by
>> stalo za to vysvetlit, v cem je to dobre, proc by to melo nekoho
>> zajimat?
>>
>> Ja tam funkcne zadny rozdil nevidim na rozdil od druheho reseni (s
>> .pop() nebo intersection od alese) a je to o neco horsi nez ciste
>> funkcionalni reseni pres reduce (ktere nenuti materializaci toho
>> seznamu uprostred).
>>
>> Dik
>> Honza Král
>> E-Mail: honza.k...@gmail.com
>> Phone:  +420 606 678585
>>
>>
>> 2015-02-09 14:06 GMT+01:00 Pavel S :
>> > Jeste jedno reseni tu mame, ktere je ciste funkcnionalni, nebot
>> > nepouziva imperativni operace jako pop() apod.
>> >
>> > result = (
>> > set.intersection(
>> > *map(
>> >  set,
>> >  filter(
>> > operator.truth,
>> > ( list_a, list_b, list_c )
>> >
>> >
>> >
>> > Dne sobota 7. února 2015 22:24:59 UTC+1 Ales Zoulek napsal(a):
>> >> "lists.pop()" melo byt pravdepodobne "sets.pop()", jinak urcite radsi
>> >> to druhy.
>> >>
>> >>
>> >>
>> >> Jinak na to existuje zkratka, ktera dela v zasade to stejne -
>> >> set.intersection() bere jako parametr libovolny pocet setu. Takze toto by
>> >> melo byt rozumne kratky a furt dost citelny:
>> >>
>> >>
>> >> non_empty_sets = [set(l) for l in (list_a, list_b, ..) if l]
>> >>
>> >> result_set = set.intersection(*non_empty_sets)
>> >>
>> >> return list(result_set)
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> On Fri Feb 06 2015 at 10:55:51 PM Vladimir Macek 
>> >> wrote:
>> >> Dovolte poznámku,
>> >>
>> >>
>> >>
>> >> je fajn, jak Honza dodal dva návrhy. Tipuju, že ten druhý je čitelnější
>> >> pro
>> >>
>> >> začátečníky, je takový imperativní. :-)
>> >>
>> >>
>> >>
>> >> Doporučoval bych však zkusit pochopit eleganci toho druhého, který je
>> >> IMO
>> >>
>> >> přístupnější pro zkušené a otevírá trochu jiný svět uvažování.
>> >>
>> >>
>> >>
>> >> Čitelnosti by pomohlo rozdělení na dva řádky (nejdřív nazvat
>> >> generátor),
>> >>
>> >> což jistě Honza ví.
>> >>
>> >>
>> >>
>> >> Pokud tazateli zároveň půjde o zachování pořadí prvků, může se podívat
>> >> po
>> >>
>> >> typu OrderedSet (http://code.activestate.com/recipes/576694/).
>> >>
>> >>
>> >>
>> >> Vl.
>> >>
>> >>
>> >>
>> >> On 6.2.2015 20:50, Honza Král wrote:
>> >>
>> >> > tohle je kratka odpoved:
>> >>
>> >> >
>> >>
>> >> > import operator
>> >>
>> >> > reduce(operator.and_, (set(l) for l in (list_a, list_b, list_c) if
>> >> > l))
>> >>
>> >> >
>> >>
>> >> > ale asi ne nejlepsi (neni prilis citelna)
>> >>
>> >> >
>> >>
>> >> >
>> >>
>> >> > doporucil bych spis neco jako:
>> >>
>> >> >
>> >>
>> >> > sets = [set(l) for l in (list_a, list_b, ..) if l]
>> >>
>> >> >
>> >>
>> >> > result =lists.pop()
>> >>
>> >> >
>> >>
>> >> > for s in sets:
>> >>
>> >> > result &= s
>> >>
>> >> > list_vysledny = list(result)
>> >>
>> >> >
>> >>
>> >> >
>> >>
>> >> > Honza Král
>> >>
>> >> > E-Mail: honza...@gmail.com
>> >>
>> >> > Phone:  +420 606 678585
>> >>
>> >> >
>> >>
>> >> >
>> >>
>> >> > 2015-02-06 20:10 GMT+01:00 Marcus Scalpere :
>> >>
>> >> >> Pěkný večer vinšuji,
>> >>
>> >> >> mám několik seznamů a potřebuji zjistit, které jsou a nejsou prázdné
>> >> >> (to bych ještě dal) a pokud některé prázdne nejsou, tak je projít a 
>> >> >> pokud
>> >> >> jsou některé hodnoty ve VŠECH, tak je uložit.
>> >>
>> >> >> Něco jako:
>> >>
>> >> >> list_a = []
>> >>
>> >> >> list_b = [x, y, z]
>> >>
>> >> >> list_c = [x, y]
>> >>
>> >> >> .
>> >>
>> >> >> .

Re: [python] Seznamy

2015-02-09 Tema obsahu Jan Bednařík
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, kde si ty
funkce musí domyslet. Nicméně List Comprehension je v Pythonu idiomatické
řešení, a čím dříve ho začátečník pochopí a naučí se ho používat, tím lépe.

Myslím si ale, že re-implementovat funkci reduce() vlastním for cyklem,
není úplně šťastné řešení. Tam kde to jde bych se držel hotových nástrojů
ze standardní knihovny. V tomhle případě je ale set.intersection() lepší
volba než reduce(and_, ...).


Každopádně asi všechna navržená řešení nefungují, protože nepočítají s
variantou, že budou všechny vstupní seznamy prázdné. Já bych to řešil takto:

sets = [set(l) for l in (list_a, list_b, list_c) if l]
result = list(set.intersection(*sets)) if sets else []

Honza

2015-02-09 14:21 GMT+01:00 Honza Král :

> Je fajn, ze davas funkcionalni reseni, ale kdyz uz to napises mozna by
> stalo za to vysvetlit, v cem je to dobre, proc by to melo nekoho
> zajimat?
>
> Ja tam funkcne zadny rozdil nevidim na rozdil od druheho reseni (s
> .pop() nebo intersection od alese) a je to o neco horsi nez ciste
> funkcionalni reseni pres reduce (ktere nenuti materializaci toho
> seznamu uprostred).
>
> Dik
> Honza Král
> E-Mail: honza.k...@gmail.com
> Phone:  +420 606 678585
>
>
> 2015-02-09 14:06 GMT+01:00 Pavel S :
> > Jeste jedno reseni tu mame, ktere je ciste funkcnionalni, nebot
> nepouziva imperativni operace jako pop() apod.
> >
> > result = (
> > set.intersection(
> > *map(
> >  set,
> >  filter(
> > operator.truth,
> > ( list_a, list_b, list_c )
> >
> >
> >
> > Dne sobota 7. února 2015 22:24:59 UTC+1 Ales Zoulek napsal(a):
> >> "lists.pop()" melo byt pravdepodobne "sets.pop()", jinak urcite radsi
> to druhy.
> >>
> >>
> >>
> >> Jinak na to existuje zkratka, ktera dela v zasade to stejne -
> set.intersection() bere jako parametr libovolny pocet setu. Takze toto by
> melo byt rozumne kratky a furt dost citelny:
> >>
> >>
> >> non_empty_sets = [set(l) for l in (list_a, list_b, ..) if l]
> >>
> >> result_set = set.intersection(*non_empty_sets)
> >>
> >> return list(result_set)
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> On Fri Feb 06 2015 at 10:55:51 PM Vladimir Macek 
> wrote:
> >> Dovolte poznámku,
> >>
> >>
> >>
> >> je fajn, jak Honza dodal dva návrhy. Tipuju, že ten druhý je čitelnější
> pro
> >>
> >> začátečníky, je takový imperativní. :-)
> >>
> >>
> >>
> >> Doporučoval bych však zkusit pochopit eleganci toho druhého, který je
> IMO
> >>
> >> přístupnější pro zkušené a otevírá trochu jiný svět uvažování.
> >>
> >>
> >>
> >> Čitelnosti by pomohlo rozdělení na dva řádky (nejdřív nazvat generátor),
> >>
> >> což jistě Honza ví.
> >>
> >>
> >>
> >> Pokud tazateli zároveň půjde o zachování pořadí prvků, může se podívat
> po
> >>
> >> typu OrderedSet (http://code.activestate.com/recipes/576694/).
> >>
> >>
> >>
> >> Vl.
> >>
> >>
> >>
> >> On 6.2.2015 20:50, Honza Král wrote:
> >>
> >> > tohle je kratka odpoved:
> >>
> >> >
> >>
> >> > import operator
> >>
> >> > reduce(operator.and_, (set(l) for l in (list_a, list_b, list_c) if l))
> >>
> >> >
> >>
> >> > ale asi ne nejlepsi (neni prilis citelna)
> >>
> >> >
> >>
> >> >
> >>
> >> > doporucil bych spis neco jako:
> >>
> >> >
> >>
> >> > sets = [set(l) for l in (list_a, list_b, ..) if l]
> >>
> >> >
> >>
> >> > result =lists.pop()
> >>
> >> >
> >>
> >> > for s in sets:
> >>
> >> > result &= s
> >>
> >> > list_vysledny = list(result)
> >>
> >> >
> >>
> >> >
> >>
> >> > Honza Král
> >>
> >> > E-Mail: honza...@gmail.com
> >>
> >> > Phone:  +420 606 678585
> >>
> >> >
> >>
> >> >
> >>
> >> > 2015-02-06 20:10 GMT+01:00 Marcus Scalpere :
> >>
> >> >> Pěkný večer vinšuji,
> >>
> >> >> mám několik seznamů a potřebuji zjistit, které jsou a nejsou prázdné
> (to bych ještě dal) a pokud některé prázdne nejsou, tak je projít a pokud
> jsou některé hodnoty ve VŠECH, tak je uložit.
> >>
> >> >> Něco jako:
> >>
> >> >> list_a = []
> >>
> >> >> list_b = [x, y, z]
> >>
> >> >> list_c = [x, y]
> >>
> >> >> .
> >>
> >> >> .
> >>
> >> >> .
> >>
> >> >> list_vysledny = [x, y]
> >>
> >> >>
> >>
> >> >> Snad jsem se vyjádřil jasně a srozumitelně. Děkuji mnohokráte
> >>
> >>
> >>
> >> ___
> >>
> >> Python mailing list
> >>
> >> pyt...@py.cz
> >>
> >> http://www.py.cz/mailman/listinfo/python
> >>
> >>
> >>
> >> Visit: http://www.py.cz
> >
> > ___
> > Python mailing list
> > python@py.cz
> > http://www.py.cz/mailman/listinfo/python
> >
> > Visit: http://www.py.cz
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Seznamy

2015-02-09 Tema obsahu Honza Král
Je fajn, ze davas funkcionalni reseni, ale kdyz uz to napises mozna by
stalo za to vysvetlit, v cem je to dobre, proc by to melo nekoho
zajimat?

Ja tam funkcne zadny rozdil nevidim na rozdil od druheho reseni (s
.pop() nebo intersection od alese) a je to o neco horsi nez ciste
funkcionalni reseni pres reduce (ktere nenuti materializaci toho
seznamu uprostred).

Dik
Honza Král
E-Mail: honza.k...@gmail.com
Phone:  +420 606 678585


2015-02-09 14:06 GMT+01:00 Pavel S :
> Jeste jedno reseni tu mame, ktere je ciste funkcnionalni, nebot nepouziva 
> imperativni operace jako pop() apod.
>
> result = (
> set.intersection(
> *map(
>  set,
>  filter(
> operator.truth,
> ( list_a, list_b, list_c )
>
>
>
> Dne sobota 7. února 2015 22:24:59 UTC+1 Ales Zoulek napsal(a):
>> "lists.pop()" melo byt pravdepodobne "sets.pop()", jinak urcite radsi to 
>> druhy.
>>
>>
>>
>> Jinak na to existuje zkratka, ktera dela v zasade to stejne - 
>> set.intersection() bere jako parametr libovolny pocet setu. Takze toto by 
>> melo byt rozumne kratky a furt dost citelny:
>>
>>
>> non_empty_sets = [set(l) for l in (list_a, list_b, ..) if l]
>>
>> result_set = set.intersection(*non_empty_sets)
>>
>> return list(result_set)
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Fri Feb 06 2015 at 10:55:51 PM Vladimir Macek  wrote:
>> Dovolte poznámku,
>>
>>
>>
>> je fajn, jak Honza dodal dva návrhy. Tipuju, že ten druhý je čitelnější pro
>>
>> začátečníky, je takový imperativní. :-)
>>
>>
>>
>> Doporučoval bych však zkusit pochopit eleganci toho druhého, který je IMO
>>
>> přístupnější pro zkušené a otevírá trochu jiný svět uvažování.
>>
>>
>>
>> Čitelnosti by pomohlo rozdělení na dva řádky (nejdřív nazvat generátor),
>>
>> což jistě Honza ví.
>>
>>
>>
>> Pokud tazateli zároveň půjde o zachování pořadí prvků, může se podívat po
>>
>> typu OrderedSet (http://code.activestate.com/recipes/576694/).
>>
>>
>>
>> Vl.
>>
>>
>>
>> On 6.2.2015 20:50, Honza Král wrote:
>>
>> > tohle je kratka odpoved:
>>
>> >
>>
>> > import operator
>>
>> > reduce(operator.and_, (set(l) for l in (list_a, list_b, list_c) if l))
>>
>> >
>>
>> > ale asi ne nejlepsi (neni prilis citelna)
>>
>> >
>>
>> >
>>
>> > doporucil bych spis neco jako:
>>
>> >
>>
>> > sets = [set(l) for l in (list_a, list_b, ..) if l]
>>
>> >
>>
>> > result =lists.pop()
>>
>> >
>>
>> > for s in sets:
>>
>> > result &= s
>>
>> > list_vysledny = list(result)
>>
>> >
>>
>> >
>>
>> > Honza Král
>>
>> > E-Mail: honza...@gmail.com
>>
>> > Phone:  +420 606 678585
>>
>> >
>>
>> >
>>
>> > 2015-02-06 20:10 GMT+01:00 Marcus Scalpere :
>>
>> >> Pěkný večer vinšuji,
>>
>> >> mám několik seznamů a potřebuji zjistit, které jsou a nejsou prázdné (to 
>> >> bych ještě dal) a pokud některé prázdne nejsou, tak je projít a pokud 
>> >> jsou některé hodnoty ve VŠECH, tak je uložit.
>>
>> >> Něco jako:
>>
>> >> list_a = []
>>
>> >> list_b = [x, y, z]
>>
>> >> list_c = [x, y]
>>
>> >> .
>>
>> >> .
>>
>> >> .
>>
>> >> list_vysledny = [x, y]
>>
>> >>
>>
>> >> Snad jsem se vyjádřil jasně a srozumitelně. Děkuji mnohokráte
>>
>>
>>
>> ___
>>
>> Python mailing list
>>
>> pyt...@py.cz
>>
>> http://www.py.cz/mailman/listinfo/python
>>
>>
>>
>> Visit: http://www.py.cz
>
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-09 Tema obsahu Pavel S
Jeste jedno reseni tu mame, ktere je ciste funkcnionalni, nebot nepouziva 
imperativni operace jako pop() apod.

result = (
set.intersection(
*map(
 set,
 filter(
operator.truth,
( list_a, list_b, list_c )



Dne sobota 7. února 2015 22:24:59 UTC+1 Ales Zoulek napsal(a):
> "lists.pop()" melo byt pravdepodobne "sets.pop()", jinak urcite radsi to 
> druhy.
> 
> 
> 
> Jinak na to existuje zkratka, ktera dela v zasade to stejne - 
> set.intersection() bere jako parametr libovolny pocet setu. Takze toto by 
> melo byt rozumne kratky a furt dost citelny:
> 
> 
> non_empty_sets = [set(l) for l in (list_a, list_b, ..) if l]
> 
> result_set = set.intersection(*non_empty_sets)
> 
> return list(result_set)
> 
> 
> 
> 
> 
> 
> 
> 
> 
> On Fri Feb 06 2015 at 10:55:51 PM Vladimir Macek  wrote:
> Dovolte poznámku,
> 
> 
> 
> je fajn, jak Honza dodal dva návrhy. Tipuju, že ten druhý je čitelnější pro
> 
> začátečníky, je takový imperativní. :-)
> 
> 
> 
> Doporučoval bych však zkusit pochopit eleganci toho druhého, který je IMO
> 
> přístupnější pro zkušené a otevírá trochu jiný svět uvažování.
> 
> 
> 
> Čitelnosti by pomohlo rozdělení na dva řádky (nejdřív nazvat generátor),
> 
> což jistě Honza ví.
> 
> 
> 
> Pokud tazateli zároveň půjde o zachování pořadí prvků, může se podívat po
> 
> typu OrderedSet (http://code.activestate.com/recipes/576694/).
> 
> 
> 
> Vl.
> 
> 
> 
> On 6.2.2015 20:50, Honza Král wrote:
> 
> > tohle je kratka odpoved:
> 
> >
> 
> > import operator
> 
> > reduce(operator.and_, (set(l) for l in (list_a, list_b, list_c) if l))
> 
> >
> 
> > ale asi ne nejlepsi (neni prilis citelna)
> 
> >
> 
> >
> 
> > doporucil bych spis neco jako:
> 
> >
> 
> > sets = [set(l) for l in (list_a, list_b, ..) if l]
> 
> >
> 
> > result =lists.pop()
> 
> >
> 
> > for s in sets:
> 
> >     result &= s
> 
> > list_vysledny = list(result)
> 
> >
> 
> >
> 
> > Honza Král
> 
> > E-Mail: honza...@gmail.com
> 
> > Phone:  +420 606 678585
> 
> >
> 
> >
> 
> > 2015-02-06 20:10 GMT+01:00 Marcus Scalpere :
> 
> >> Pěkný večer vinšuji,
> 
> >> mám několik seznamů a potřebuji zjistit, které jsou a nejsou prázdné (to 
> >> bych ještě dal) a pokud některé prázdne nejsou, tak je projít a pokud jsou 
> >> některé hodnoty ve VŠECH, tak je uložit.
> 
> >> Něco jako:
> 
> >> list_a = []
> 
> >> list_b = [x, y, z]
> 
> >> list_c = [x, y]
> 
> >> .
> 
> >> .
> 
> >> .
> 
> >> list_vysledny = [x, y]
> 
> >>
> 
> >> Snad jsem se vyjádřil jasně a srozumitelně. Děkuji mnohokráte
> 
> 
> 
> ___
> 
> Python mailing list
> 
> pyt...@py.cz
> 
> http://www.py.cz/mailman/listinfo/python
> 
> 
> 
> Visit: http://www.py.cz

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-07 Tema obsahu Ales Zoulek
"lists.pop()" melo byt pravdepodobne "sets.pop()", jinak urcite radsi to
druhy.

Jinak na to existuje zkratka, ktera dela v zasade to stejne -
set.intersection() bere jako parametr libovolny pocet setu. Takze toto by
melo byt rozumne kratky a furt dost citelny:

non_empty_sets = [set(l) for l in (list_a, list_b, ..) if l]
result_set = set.intersection(*non_empty_sets)
return list(result_set)





On Fri Feb 06 2015 at 10:55:51 PM Vladimir Macek  wrote:

> Dovolte poznámku,
>
> je fajn, jak Honza dodal dva návrhy. Tipuju, že ten druhý je čitelnější pro
> začátečníky, je takový imperativní. :-)
>
> Doporučoval bych však zkusit pochopit eleganci toho druhého, který je IMO
> přístupnější pro zkušené a otevírá trochu jiný svět uvažování.
>
> Čitelnosti by pomohlo rozdělení na dva řádky (nejdřív nazvat generátor),
> což jistě Honza ví.
>
> Pokud tazateli zároveň půjde o zachování pořadí prvků, může se podívat po
> typu OrderedSet (http://code.activestate.com/recipes/576694/).
>
> Vl.
>
> On 6.2.2015 20:50, Honza Král wrote:
> > tohle je kratka odpoved:
> >
> > import operator
> > reduce(operator.and_, (set(l) for l in (list_a, list_b, list_c) if l))
> >
> > ale asi ne nejlepsi (neni prilis citelna)
> >
> >
> > doporucil bych spis neco jako:
> >
> > sets = [set(l) for l in (list_a, list_b, ..) if l]
> >
> > result =lists.pop()
> >
> > for s in sets:
> > result &= s
> > list_vysledny = list(result)
> >
> >
> > Honza Král
> > E-Mail: honza.k...@gmail.com
> > Phone:  +420 606 678585
> >
> >
> > 2015-02-06 20:10 GMT+01:00 Marcus Scalpere :
> >> Pěkný večer vinšuji,
> >> mám několik seznamů a potřebuji zjistit, které jsou a nejsou prázdné
> (to bych ještě dal) a pokud některé prázdne nejsou, tak je projít a pokud
> jsou některé hodnoty ve VŠECH, tak je uložit.
> >> Něco jako:
> >> list_a = []
> >> list_b = [x, y, z]
> >> list_c = [x, y]
> >> .
> >> .
> >> .
> >> list_vysledny = [x, y]
> >>
> >> Snad jsem se vyjádřil jasně a srozumitelně. Děkuji mnohokráte
>
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Seznamy

2015-02-06 Tema obsahu Vladimir Macek
Dovolte poznámku,

je fajn, jak Honza dodal dva návrhy. Tipuju, že ten druhý je čitelnější pro
začátečníky, je takový imperativní. :-)

Doporučoval bych však zkusit pochopit eleganci toho druhého, který je IMO
přístupnější pro zkušené a otevírá trochu jiný svět uvažování.

Čitelnosti by pomohlo rozdělení na dva řádky (nejdřív nazvat generátor),
což jistě Honza ví.

Pokud tazateli zároveň půjde o zachování pořadí prvků, může se podívat po
typu OrderedSet (http://code.activestate.com/recipes/576694/).

Vl.

On 6.2.2015 20:50, Honza Král wrote:
> tohle je kratka odpoved:
>
> import operator
> reduce(operator.and_, (set(l) for l in (list_a, list_b, list_c) if l))
>
> ale asi ne nejlepsi (neni prilis citelna)
>
>
> doporucil bych spis neco jako:
>
> sets = [set(l) for l in (list_a, list_b, ..) if l]
>
> result =lists.pop()
>
> for s in sets:
> result &= s
> list_vysledny = list(result)
>
>
> Honza Král
> E-Mail: honza.k...@gmail.com
> Phone:  +420 606 678585
>
>
> 2015-02-06 20:10 GMT+01:00 Marcus Scalpere :
>> Pěkný večer vinšuji,
>> mám několik seznamů a potřebuji zjistit, které jsou a nejsou prázdné (to 
>> bych ještě dal) a pokud některé prázdne nejsou, tak je projít a pokud jsou 
>> některé hodnoty ve VŠECH, tak je uložit.
>> Něco jako:
>> list_a = []
>> list_b = [x, y, z]
>> list_c = [x, y]
>> .
>> .
>> .
>> list_vysledny = [x, y]
>>
>> Snad jsem se vyjádřil jasně a srozumitelně. Děkuji mnohokráte

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Seznamy

2015-02-06 Tema obsahu Honza Král
tohle je kratka odpoved:

import operator
reduce(operator.and_, (set(l) for l in (list_a, list_b, list_c) if l))

ale asi ne nejlepsi (neni prilis citelna)


doporucil bych spis neco jako:

sets = [set(l) for l in (list_a, list_b, ..) if l]

result =lists.pop()

for s in sets:
result &= s
list_vysledny = list(result)


Honza Král
E-Mail: honza.k...@gmail.com
Phone:  +420 606 678585


2015-02-06 20:10 GMT+01:00 Marcus Scalpere :
> Pěkný večer vinšuji,
> mám několik seznamů a potřebuji zjistit, které jsou a nejsou prázdné (to bych 
> ještě dal) a pokud některé prázdne nejsou, tak je projít a pokud jsou některé 
> hodnoty ve VŠECH, tak je uložit.
> Něco jako:
> list_a = []
> list_b = [x, y, z]
> list_c = [x, y]
> .
> .
> .
> list_vysledny = [x, y]
>
> Snad jsem se vyjádřil jasně a srozumitelně. Děkuji mnohokráte
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz