Re: [python] Buducnost Pythonu: lambda, map, filter

2017-12-14 Tema obsahu Petr Mach
Zajímavé, já to mám datované z letošního roku :-).

Dne 13. 12. 2017 10:05 napsal uživatel "Pavel Schön" :

> Děkujeme za oživení 11 let starého vlákna, na tyto věci se prostě nesmí
> zapomenout... :-)
>
> Dne úterý 12. prosince 2017 13:51:54 UTC+1 Petr Mach napsal(a):
> > Dnes je ještě lepší toto:
> > with open('data.txt') as f:
> > for line in f:
> > print line
> >
> >
> >
> > Dne 31. 3. 2017 13:35 napsal uživatel "Petr Přikryl" :
> > Roman Miklos napsal(a):
> >
> >
> > Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
> >
> > bolo mozne namiesto
> >
> >
> >
> > f = open("data.txt")
> >
> > line = f.readline() while line:
> >
> >   print line
> >
> >   line = f.readline()
> >
> > f.close()
> >
> >
> >
> > napisat jednoducho ako v Perle a C++
> >
> >
> >
> > f = open("data.txt")
> >
> > while line = f.readline():
> >
> >   print line f.close()
> >
> >
> >
> >
> > Já raději píšu
> >
> >
> >
> > f = open("data.txt")
> >
> > for line in f:
> >
> > print line
> >
> > f.close()
> >
> >
> >
> >
> >
> > pepr
> >
> > ___
> >
> > 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] Buducnost Pythonu: lambda, map, filter

2017-12-13 Tema obsahu Vláďa Macek
Ano! A je to pěkná ukázka stability jazyka, není-liž pravda?

Nabízím ještě tvořivě generátor sad buněk dělených tabulátorem. :-)

line_cells = (line.split('\t') for line in open('data.txt'))

Po konzumaci generátoru se soubor sám zavře (Python 2.7.12 i 3.5.2).
To samé platí i pro `for line in open(...):`.

Hezké Vánoce,

V.


On 13.12.2017 10:02, Pavel Schön wrote:
> Děkujeme za oživení 11 let starého vlákna, na tyto věci se prostě nesmí 
> zapomenout... :-)
>
> Dne úterý 12. prosince 2017 13:51:54 UTC+1 Petr Mach napsal(a):
>> Dnes je ještě lepší toto:
>> with open('data.txt') as f:
>>     for line in f:
>>         print line
>>
>>
>>
>> Dne 31. 3. 2017 13:35 napsal uživatel "Petr Přikryl" :
>> Roman Miklos napsal(a):
>>
>>
>> Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
>>
>> bolo mozne namiesto
>>
>>
>>
>> f = open("data.txt")
>>
>> line = f.readline() while line:
>>
>>   print line
>>
>>   line = f.readline()
>>
>> f.close()
>>
>>
>>
>> napisat jednoducho ako v Perle a C++
>>
>>
>>
>> f = open("data.txt")
>>
>> while line = f.readline():
>>
>>   print line f.close()
>>
>>
>>
>>
>> Já raději píšu
>>
>>
>>
>> f = open("data.txt")
>>
>> for line in f:
>>
>>     print line
>>
>> f.close()
>>
>>
>>
>>
>>
>> pepr

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

Visit: http://www.py.cz


Re: [python] Buducnost Pythonu: lambda, map, filter

2017-12-13 Tema obsahu Pavel Schön
Děkujeme za oživení 11 let starého vlákna, na tyto věci se prostě nesmí 
zapomenout... :-)

Dne úterý 12. prosince 2017 13:51:54 UTC+1 Petr Mach napsal(a):
> Dnes je ještě lepší toto:
> with open('data.txt') as f:
>     for line in f:
>         print line
> 
> 
> 
> Dne 31. 3. 2017 13:35 napsal uživatel "Petr Přikryl" :
> Roman Miklos napsal(a):
> 
> 
> Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
> 
> bolo mozne namiesto
> 
> 
> 
> f = open("data.txt")
> 
> line = f.readline() while line:
> 
>   print line
> 
>   line = f.readline()
> 
> f.close()
> 
> 
> 
> napisat jednoducho ako v Perle a C++
> 
> 
> 
> f = open("data.txt")
> 
> while line = f.readline():
> 
>   print line f.close()
> 
> 
> 
> 
> Já raději píšu
> 
> 
> 
> f = open("data.txt")
> 
> for line in f:
> 
>     print line
> 
> f.close()
> 
> 
> 
> 
> 
> pepr
> 
> ___
> 
> 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] Buducnost Pythonu: lambda, map, filter

2017-12-12 Tema obsahu Petr Mach
Dnes je ještě lepší toto:
with open('data.txt') as f:
for line in f:
print line

Dne 31. 3. 2017 13:35 napsal uživatel "Petr Přikryl" :

Roman Miklos napsal(a):

> Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
> bolo mozne namiesto
>
> f = open("data.txt")
> line = f.readline() while line:
>   print line
>   line = f.readline()
> f.close()
>
> napisat jednoducho ako v Perle a C++
>
> f = open("data.txt")
> while line = f.readline():
>   print line f.close()
>

Já raději píšu

f = open("data.txt")
for line in f:
print line
f.close()


pepr
___
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] Buducnost Pythonu: lambda, map, filter

2006-11-23 Tema obsahu RMiklos
Som si teraz pozeral to video z prednasky s Guidom ...
Rad by som si to video pozrel tiez, kde je to k dispozicii?





Jan Janech [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
21.11.2006 20:58
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






Som si teraz pozeral to video z prednasky s Guidom (na moje prekvapenie 
som tomu rozumel :) - kto by povedal, ze mi to cumenie na filmy v 
povodnom zneni /aj ked len s titulkami/ na nieco bude) a cital si PEP 
3100 a niektore veci ma potesili a niektore sklamali:
- lambda zostava (super :D)
- tak isto map/filter (nepouzivam, je mi to jedno)
- reduce zrusili (--||--)
- na moju zlost zrusili builtin fciu callable (just call the object and 
catch the exception - ble)
- zrusili dict.setdefault() (zrovna ked som objavil, ake je to pekne 
riesenie a zacal to pouzivat)
- a podla mna najhorsie, rusia statement print a nahradzaju ho za 
funkciu... neviem aky bude mat potom este vyznam... teraz aspon 
sprehladnoval vypisovanie na stdout/do textoveho suboru.

inak maju tam strasne vela vylepseni... ale tieto cistky (minimalne 
aspon u toho print (:D) si mohli odpustit)
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-23 Tema obsahu Jan Janech
[EMAIL PROTECTED] wrote:
 Som si teraz pozeral to video z prednasky s Guidom ...
 Rad by som si to video pozrel tiez, kde je to k dispozicii?

http://video.google.com/videoplay?docid=-6459339159268485356q=python+3000
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-19 Tema obsahu Jan Kundrát
Radek Kanovsky wrote:
 # faktorial
 faktorial=lambda n: reduce(lambda x,y: x*y, range(2, n+1), 1)
 print faktorial(%d)=%d % (0, faktorial(0))
 print faktorial(%d)=%d % (5, faktorial(5))
 
 Faktorial se prakticky pocita pouze v prvnich lekcich vyuky Pythonu
 a tam se to kvuli nazornosti dela rekurzivni funkci :-)

Misto toho, aby pouzili [1] :)

[1]
http://cs.wikipedia.org/wiki/Fibonacciho_posloupnost#Algoritmy_v.C3.BDpo.C4.8Dtu

-jkt

-- 
cd /local/pub  more beer  /dev/mouth



signature.asc
Description: OpenPGP digital signature
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-14 Tema obsahu Jan Janech
Roman Miklos wrote:
 for line in file('data.txt'):
  print line
 
 Mhm, to vyzera naozaj super, na moje pocudovanie tam netreba ani 
 otvarat/zatvarat file. 
 Len neviem ako to funguje. Nie je to nahodou to iste ako 
 
 f = open(data.txt)
 for line in f.readlines():
  print line
 f.close()
 
 t. j., ze vsetky riadky sa nacitaju naraz do zoznamu a potom sa cez ten 
 zoznam iteruje? 
 To by bolo potom z hladiska vyuzitia pamati nieco uplne ine ako ten 
 priklad co som uviedol dole, 
 kde citam subor riadok po riadku.

Pozeral som do zdrojakov pythonu, __iter__ vracia sam seba. Potom metoda 
next() file objectu vola priamo Cckova fcia readahead_get_line_skip, 
ktora nacita riadok.

Co sa tyka otvarania suboru, open je len alias na file, takze otvarat ho 
treba :)

A co sa tyka zatvarania suboru (tiez som pozeral v zdrojakoch - pre 
istotu), ked zrusis referenciu na subor, tak sa automaticky zavrie.
Teda:

f = open(data.txt)
del f

a

f = open(data.txt)
f.close()

spravia to iste: zavru subor.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-14 Tema obsahu Roman Miklos
for line in file('data.txt'):
 print line

Mhm, to vyzera naozaj super, na moje pocudovanie tam netreba ani 
otvarat/zatvarat file. 
Len neviem ako to funguje. Nie je to nahodou to iste ako 

f = open(data.txt)
for line in f.readlines():
 print line
f.close()

t. j., ze vsetky riadky sa nacitaju naraz do zoznamu a potom sa cez ten 
zoznam iteruje? 
To by bolo potom z hladiska vyuzitia pamati nieco uplne ine ako ten 
priklad co som uviedol dole, 
kde citam subor riadok po riadku.




Jan Janech [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
13.11.2006 21:24
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






Roman Miklos wrote:
 Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
 bolo mozne namiesto
 
 f = open(data.txt)
 line = f.readline() 
 while line:
   print line
   line = f.readline()
 f.close()
 
 napisat jednoducho ako v Perle a C++
 
 f = open(data.txt)
 while line = f.readline():
   print line 
 f.close()


Tiez by som privital prirarenie ako operator (dokonca by bolo super aj 
keby sa da prekryt v triede :D ), ale toto je akurat jeden s pripadov, 
kedy sa viac hodi pouzitie iteratorov. Tato konstrukcia sa prave pouziva 
ako nahrada za ne. podla mna je krajsie a prehladnejsie

for line in file('data.txt'):
 print line

Ale samozrejme je vela pripadov, ked sa oplati pouzit operator 
priradenia vramci ineho vyrazu.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-14 Tema obsahu Jan Matejka
 for line in file('data.txt'):
  print line
 
 Mhm, to vyzera naozaj super, na moje pocudovanie tam netreba 
 ani otvarat/zatvarat file. 
 Len neviem ako to funguje. Nie je to nahodou to iste ako 
 
 f = open(data.txt)
 for line in f.readlines():
  print line
 f.close()

je to spíš jako 
for line in f.xreadlines():

Kde xreadlines() vrací iterátor, který čte soubor postupně na rozdíl od
readlines který přečte soubor najednou do seznamu řádků.

Přidám se ale k nadávání na odstraňování starých prvků jazyka.  Xreadlines
je od verze 2.3 označeno za zastaralé. 

for line in file(data.txt).xreadlines():
...

se mi líbí víc než preferované 
for line in file('data.txt')
...

protože explicit is better than implicit. Xreadlines() totiž vyjadřuje že
se čte po řádcích a nikoliv po bytech,unicode znacích nebo co já vím jakých
jednotkách v souboru.

Jan Matějka

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-14 Tema obsahu Roman Miklos
Pozeral som do zdrojakov pythonu, __iter__ vracia sam seba. Potom metoda 
next() file objectu vola priamo Cckova fcia readahead_get_line_skip, 
ktora nacita riadok.
ok takze cita to riadok po riadku a nie najprv vsetko naraz do zoznamu

Kedze file je alias pre open

print file=%s % file('data.txt') 
file=open file 'data.txt', mode 'r' at 0x00A1D3C8
print open=%s % open(data.txt)
open=open file 'data.txt', mode 'r' at 0x00A1D3C8

tak sa namiesto noveho 

for line in file('data.txt'):
print line

da pouzit aj stare 

for line in open('data.txt'):
print line


Tomu s tym zatvaranim nerozumiem, lebo ked urobim explicitne 
f.open('data.txt')
tak si to aj zavriem
f.open('data.txt')

ale ak explicitne neotvaram ako je to v tom pripade cez file() hore, tak 
nemam ziadnu referenciu na subor, ktoru by som mohol vymazat a nemam ani 
co zatvorit. Jedine, ze by to bolo tak dokonale, ze subor uz netreba 
zatvarat o com pochybujem :-)




Jan Janech [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
14.11.2006 11:24
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






Roman Miklos wrote:
 for line in file('data.txt'):
  print line
 
 Mhm, to vyzera naozaj super, na moje pocudovanie tam netreba ani 
 otvarat/zatvarat file. 
 Len neviem ako to funguje. Nie je to nahodou to iste ako 
 
 f = open(data.txt)
 for line in f.readlines():
  print line
 f.close()
 
 t. j., ze vsetky riadky sa nacitaju naraz do zoznamu a potom sa cez ten 
 zoznam iteruje? 
 To by bolo potom z hladiska vyuzitia pamati nieco uplne ine ako ten 
 priklad co som uviedol dole, 
 kde citam subor riadok po riadku.

Pozeral som do zdrojakov pythonu, __iter__ vracia sam seba. Potom metoda 
next() file objectu vola priamo Cckova fcia readahead_get_line_skip, 
ktora nacita riadok.

Co sa tyka otvarania suboru, open je len alias na file, takze otvarat ho 
treba :)

A co sa tyka zatvarania suboru (tiez som pozeral v zdrojakoch - pre 
istotu), ked zrusis referenciu na subor, tak sa automaticky zavrie.
Teda:

f = open(data.txt)
del f

a

f = open(data.txt)
f.close()

spravia to iste: zavru subor.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu Jakub Hegenbart
Petr Prikryl wrote:
 Jde o to, že Python může k reduce a lambda nabídnout 
 alternativy, které nelze srovnávat s primitivností 
 podmíněného skoku. Ty alternativy mi připadají lepší
 než reduce/lambda.
Dobře, tohle mě zajímá: Jakou alternativu nabízí Python k foldl (které 
si přejmenoval na „reduce“)? U map je to jasné, přeci jen list 
comprehension ani generator expression nejsou o moc horší, navíc 
generator expression má lazy sémantiku, což je Good Thing(TN). Ale u 
toho reduce() trošku tápu.

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

Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu Jan Matejka
 Dobře, tohle mě zajímá: Jakou alternativu nabízí Python k 
 foldl (které si přejmenoval na reduce)? U map je to jasné, 
 přeci jen list comprehension ani generator expression nejsou 
 o moc horší, navíc generator expression má lazy sémantiku, 
 což je Good Thing(TN). Ale u toho reduce() trošku tápu.

Taky jsem tápal, ale GvR mi to objasnil na zmíněné stránce:
http://www.artima.com/weblogs/viewpost.jsp?thread=98196

So now reduce(). This is actually the one I've always hated most, because,
apart from a few examples involving + or *, almost every time I see a
reduce() call with a non-trivial function argument, I need to grab pen and
paper to diagram what's actually being fed into that function before I
understand what the reduce() is supposed to do. 

Zrušením reduce() GvR chrání americké lesy.
Jan Matějka

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu superman
 So now reduce(). This is actually the one I've always hated most, because,
 apart from a few examples involving + or *, almost every time I see a
 reduce() call with a non-trivial function argument, I need to grab pen and
 paper to diagram what's actually being fed into that function before I
 understand what the reduce() is supposed to do. 
 
 Zrušením reduce() GvR chrání americké lesy.

Myslím, že by se uplatnil v politice a jako právník. Taktéž bych rád 
prozkoumal zákulisní spojení mezi organizací greenpeace a GvR. :-)

Miloslav Ponkrác
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu Roman Miklos
Tiez som cital, co napisal Guido
v tom clanku
All Things Pythonic
The fate of reduce() in Python 3000
http://www.artima.com/weblogs/viewpost.jsp?thread=98196

Ale rozumel som z toho akurat ...blabla...reduce()...blabla..., teda 
ziadne dovody.

Aj ked reduce pouzivam len v spojeni s glob(), prave preto, ze toto 
pouzitie  uvadzaju v kapitole 9 knihy
http://www.grada.cz/katalog/kniha/naucte-se-python/ (pozri priklad dole) 
povazoval som pouzite reduce() za pytonicke.
Naopak Guido sa teraz snazi v tom horeuvedenom clanku s nadpisom 'All 
Things Pythonic' povedat asi to, ze reduce() nie je pytonicky.

Kazdopadne si myslim. ze reduce() ma opodstatnenie, kto tomu rozumie, moze 
robit veci elegantnejsie. 
Tu je par jednoduchych prikladov na reduce():

--- reduce.py ---
# reduce(function, list [, init_val]) 
# aplikuje fukciu 2 argumentov na prvky zoznamu zlava do prava, 
# t.j. tak, aby sa zoznam zredukoval na jednu hodnotu.
# S init_val mozno zadat inicializacnu hodnotu
# Napriklad:
# reduce(lambda x,y:x+y,range(1,6),5) 
# vypocita 5+(1+2)+3)+4)+5))=20.

# priklady:


# suma 1,..,n
suma1=lambda n: reduce(lambda x,y: x+y, range(n+1))
print suma(%d)=%d %(5, suma1(5))


# suma zoznamu
suma2=lambda l:  reduce(lambda x,y: x+y, l)
l = range(6)
print suma(%s)=%d % (l, suma2(l))


# faktorial
faktorial=lambda n: reduce(lambda x,y: x*y, range(2, n+1), 1)
print faktorial(%d)=%d % (0, faktorial(0))
print faktorial(%d)=%d % (5, faktorial(5))


# Globbing - rozvinut wildcards ?, * v cestach k suborom
import sys, operator, glob
arguments = sys.argv[1:]
# ak su zadane nejake command-line argumenty (napr. editor.py oop1*.* 
*.py~)
if arguments:
 
  # pouzitie reduce()
  filez = reduce(lambda x,y: x+y, map(glob.glob, arguments))
  print filez

  # bez pouzitia reduce()
  filez=[]
  for arg in arguments:
arg_list=glob.glob(arg)
filez += arg_list
  print filez
--- koniec ---

Myslim, ze reduce() nebude nahradeny nijakou inou alternativou. Jednoducho 
to co reduce() robil za teba, budes musiet naprogramovat.




Jakub Hegenbart [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
13.11.2006 15:34
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






Petr Prikryl wrote:
 Jde o to, že Python může k reduce a lambda nabídnout 
 alternativy, které nelze srovnávat s primitivností 
 podmíněného skoku. Ty alternativy mi připadají lepší
 než reduce/lambda.
Dobře, tohle mě zajímá: Jakou alternativu nabízí Python k foldl (které 
si přejmenoval na ?reduce?)? U map je to jasné, přeci jen list 
comprehension ani generator expression nejsou o moc horší, navíc 
generator expression má lazy sémantiku, což je Good Thing(TN). Ale u 
toho reduce() trošku tápu.

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

Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu Roman Miklos
Guido najprv vsetko co sa dalo prebral z inych jazykov (Perl,...) a musim 
povedat, ze sa mu to podarilo dobre sklbit dokopy.
Ale teraz nastal obrat v jeho mysleni a chce zase robit v Pythone taketo 
cistky, to sa mi nepaci.

Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
bolo mozne namiesto

f = open(data.txt)
line = f.readline() 
while line:
  print line
  line = f.readline()
f.close()

napisat jednoducho ako v Perle a C++

f = open(data.txt)
while line = f.readline():
  print line 
f.close()

a keby praca s regularnymi vyrazmi bola taka flexibilna ako v Perle cez 
operator =~
napr.

line = A1A 1A1 BBBCCC
line =~ s/(\S{3})\s*/$1 /g
# vysledok: ine = A1A 1A1 BBB CCC

alebo

if riadok =~ /(\d{6}\/\d{3,4})/  :
  print riadok obsahuje rodne cislo

Vtedy by som Guida chvalil
:-)))
 



superman [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
13.11.2006 18:24
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






 Naopak Guido sa teraz snazi v tom horeuvedenom clanku s nadpisom 'All 
 Things Pythonic' povedat asi to, ze reduce() nie je pytonicky.

To je jako boj za čistou rasu. Navrhuji zastřelit GvR, než bude ještě 
více despotický ve svým rozhodnutích. Protože já jeho argumenty začínám 
považovat ... za trochu subjektivní.

Podmíněné přiřazení není v Pythonu, protože to příliš připomíná C.

Přiřazení není výrazem, protože to připomíná C (i když s tímto možná i 
trochu souhlasím).

Funkctionální věci příliš připomínají Lisp, nebo Scheme.

Já bych navrhnul, aby GvR dostal doživotní soudní zákaz s ostrahou učit 
se další programovací jazyky, jinak z Pythona zmizí úplně vše.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu superman
 Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
 bolo mozne namiesto
 
 f = open(data.txt)
 line = f.readline() 
 while line:
   print line
   line = f.readline()
 f.close()
 
 napisat jednoducho ako v Perle a C++
 
 f = open(data.txt)
 while line = f.readline():
   print line 
 f.close()

To bych taky uvítal, kdyby přiřazení bylo výrazem. Jak to jednou člověk 
pozná, nemůže se bez toho obejít.

 a keby praca s regularnymi vyrazmi bola taka flexibilna ako v Perle cez 
 operator =~
 napr.
 
 line = A1A 1A1 BBBCCC
 line =~ s/(\S{3})\s*/$1 /g
 # vysledok: ine = A1A 1A1 BBB CCC
 
 alebo
 
 if riadok =~ /(\d{6}\/\d{3,4})/  :
   print riadok obsahuje rodne cislo

Zase bych to s Perlem nepřeháněl. Když napíšete:

if re.match('...',riadok):
   print riadok obsahuje rodne cislo

Nezmnožoval bych to co není nutné.

Ale hlavně bych se dnes už držel zpětné kompatibility a hlavně už bych 
neopisoval nic z Perlu. Perl není IMHO dobře navržený jazyk. Docela bych 
věřil že GvR převzal z Perlu i tu pitomost, že Larry připravuje Perl 6 
nekompatibilní s předhcozími verzemi. Jenže tady se zapomíná, že Perl je 
a vždycky zůstane malým skriptovacím jazykem a sotva kdy se v tom napíše 
něco většího (výjimky potvrzující pravidlo pomiňme), protože zkrátka 
udržoval větší projekt v Perlu není jednoduché.

Upřímně řečeno, kdybych v době kdy jsem se začal zajímat o Python věděl, 
že se připravuje další zpětně nekompatibilní verze Pythona, do učení 
Pythonu bych se nepustil a učil bych se něco jiného. Bohužel Python je 
tak dobrý jazyk, že se mi od něj nechce odcházet.















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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu Petr Přikryl
Roman Miklos napsal(a):
 Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
 bolo mozne namiesto
 
 f = open(data.txt)
 line = f.readline() 
 while line:
   print line
   line = f.readline()
 f.close()
 
 napisat jednoducho ako v Perle a C++
 
 f = open(data.txt)
 while line = f.readline():
   print line 
 f.close()

Já raději píšu

f = open(data.txt)
for line in f:
 print line
f.close()


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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Petr Prikryl
superman
 Roman Miklóš
  V trede Statické metody v Pythonu 
  (http://www.py.cz/pipermail/python/2006-November/004991.html)
  superman napisal:
... map,filter a podobné (což prý v další verzi Pythonu nebude...
 
 [...] Zajímavý je blog Rossuma:
 http://www.artima.com/weblogs/viewpost.jsp?thread=98196
 
 Nedávno jsem od něj četl, že v Pythonu není podmíněné přiřazení,
 ani přiřazení není výrazem, neboť by to příliš připomínalo C. Teď 
 píše, že lambda příliš připomíná Lisp, nebo Scheme, tudíž musí ven. 
 Já bych doporučoval vůbec s tímto příastupem škrtnout celý Python, 
 protože až příliš připomíná programovací jazyk.

O osudu lambda se diskutovalo na comp.lang.python. Osobně jsem
lambda nikdy nepotřeboval. Jakékoliv jeho použití v Pythonu
se podle mě dá jednoduše přepsat bez lambda způsobem, který
je proti lambda přehlednější a srozumitelnější.

Přiřazení jako výraz působí komplikace protože se 
v boolovských výrazech může poplést == s =.

Podmíněný výraz je novinkou v Python 2.5.

Python je procedurální a nikoliv funkcionální jazyk.
Z funkcionálních zápisů v něm  fungují jen ty věci,
které se dají JEDNODUŠE převést na procedurální postup.
Jiné výhody funkcionálních jazyků zde odpadají (například
automatická paralelizace výpočtu).

Z The Zen of Python, by Tim Peters bych k tomu vybral...

Simple is better than complex.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
There should be one-- and preferably only one --obvious way to do it.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.

Navrhuji rozebrat několik případů, kde se používají
lambda, map, filter, reduce a pohádat se o alternativním
zápisu jinými prostředky jazyka Python ;-)

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Lukáš Linhart
E-mail Petr Prikryl ze dne Friday 10 November 2006 11:56:
 superman
 Navrhuji rozebrat několik případů, kde se používají
 lambda, map, filter, reduce a pohádat se o alternativním
 zápisu jinými prostředky jazyka Python ;-)

self.assertRaises(ValueError, lambda:cls.myBadMethod())

Tohle je casto pouzivany oneliner, jehoz try - catch - raise na 5 radku sakra 
prodlouzi unittesty.

 pepr

-- 
Lukáš Linhart


pgp868KYSF9mO.pgp
Description: PGP signature
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Petr Prikryl
superman
 [...] Osobně lambda především omezuje zbytečné definice 
 krátkých funkcí, které se použijí jednorázově. To může 
 zpřehlednit maximálním způsobem zdrojový kód. Přepsat 
 se samozřejmě dá všechno, protože je matematicky dokázáno, 
 že jakýkoli algoritmus se dá napsat pouze s podmíněným skokem.

Jde o to, že Python může k reduce a lambda nabídnout 
alternativy, které nelze srovnávat s primitivností 
podmíněného skoku. Ty alternativy mi připadají lepší
než reduce/lambda.

  Přiřazení jako výraz působí komplikace protože se 
  v boolovských výrazech může poplést == s =.
 
 To je bohužel problém Pythonu, že umožňuje do logických 
 operátorů zavést i jiné, než logické typy. Tohle v jazycích
 nesnáším, tahle vlastnost je error prone a bohužel jí hodně
 tvůrců jazyka z nějakého, pro mě sadistického důvodu zavádí.

Ten sadistický důvod se jmenuje zpětná kompatibilita. Začíná
to u strojových instrukcí, přes C, C++ a vše, co se je snaží
napodobovat. Strojové instrukce neznají typy ve smyslu
vyššího programovacího jazyka. Nula je false, cokoliv jiného
je true. Python kdysi boolovské hodnoty vůbec neznal.

 Tohle bohužel dobře ošetřila Java, nebo Pascal, že logické 
 operátory musejí mít jako operandy pouze logické typy. 
 Pak rozhodně není žádný problém s = a ==. Takže problém, který 
 popisujete je sekundární.

... ale ne v Pythonu. V něm můžu jakémukoliv jménu přiřadit 
cokoliv (referenci na libovolný objekt). Pascal a Java dělají
typovou kontrolu v době kompilace a identifikátor je svázán
s typem. V Pythonu by tedy docházelo k výrazně zapeklitějším 
chybám.

 Díky té blbosti, že logické výrazy pracují i s nelogickými typy je 
 Python závislý na kontextu. Tentýž výraz znamená něco jiného 
 v podmínce a něco jiného mimo podmínku. Nechápu proč prostě dovolovat 
 podmínky typu:
 
 a = 2
 if a:
print je to tam
 
 Já bych si přál jazyk, který striktně přikazuje napsat:
 
 a = 2
 if a != 0:
print je to tam

Říká se tomu interpretace v boolovském kontextu. Je to věc
dohody. Taky píšu raději 
  if len(lst)  0:
 ...
než jen
  if lst:
 ...

Ale hodně lidí dává přednost stručnosti... ;o)
a taky vyhození této vlastností by v porovnání s vyhozením
lambda bylo mnohem výraznější...

 [...] hrubé PORUŠENÍ ZPĚTNÉ KOMPATIBILITY jazyka, a pokud 
 vím, zatím žádný jazyk tohle nepřežil ve zdraví.

 [...]Já se nechci hádat o alternativním zápisu. Mě jsou 
 takovéto hádky ukradené. Prostě lambda, map, filter, 
 reduce tam v Pythonu již jsou a z toho vyplývá, že tam 
 mají zůstat. A nebo tam neměly nikdy být. Tyhle hádky 
 měly skutečný smysl v době návrhu jazyka, teď už jsou pasé.

Trochu mi to připomíná Nic mi neříkejte! Já na to přijdu sám..
Debata kolem návrhu odstranit lambda a spol byla tuhá. Pokud si
dobře pamatuji, implementace lambda je v jádře jazyka udělána
nějak nečistě a některé věci komplikuje. Asi komplikuje i další
vývoj. V novějších verzích Pythonu se objevily generátory 
a generátorové výrazy, které zpětně vyjasňují i konstrukce
s tak krkolomným názvem, jako je list comprehension
(generátor seznamu).

Odhaduji, že i po uvedení verze Python 3(000) bude 
Python 2.x dlouho podporován a opravován. Nic Vám nebrání 
zůstat u něj. Disky budou tak veliké, že souběžná instalace
obou verzí interpretu bude chápána jako nulový problém.
Nedivil bych se, kdyby Python 3000 vyřešil věc pragmaticky
tím, že Python 2.x by byl součástí instalace Python 3000
jen kvůli zaručení zpětné kompatibility.

 Teď to tam je, a pak by tam podle Zen of Miloslav Ponkrác:
 
 1) Budeš v maximální možné míře dodržovat zpětnou kompatibilitu

Spousta odborníků používajících C++ říká, že jednou z největších
chyb byla asi snaha být důsledně zpětně kompatibilní s C.

 2) Jazyk, který kdy v historii hrubě porušil zpětnou 
 kompatibilitu vymřel.

Příklad?

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Roman Miklos
Mne osobne sa tieto funkcionalne prvky v Pythone pacia, i ked ziadne 
funkcionalne jazyky v praxi nepouzivam. 
Myslim, ze to robilo Python zaujimavym i pre privrzencov FP a ukazalo to 
ako sa daju pouzit veci z FP v beznej praxi. 

Tu uvadzam 2 priklady pouzitia funkcionalneho pristupu 

1) pri rozvinuti argumentov s wildcard-znakmi (?, *) na platne cesty, kde 
map() a reduce() umoznuju takyto kompaktny zapis:
argument = sys.argv[1:]
filez = reduce(operator.add, map(glob.glob, argument))

2) callbacky pri widgetoch v Tkinteri: 
* Ak je ten callback jednoducha funkcia a pouzije sa iba raz napriklad pri 
jednom buttone, naco ju definovat sepratane pre cely skript, ked ju staci 
zadefinovat cez lambda iba na tom mieste kde sa pouzije.

* callback s argumentom - t.j ak chces napr. pouzit ten isty callback pri 
viacerych buttonoch, napr.
def callback(n):
print button, n

Button(text=jeden,   command=lambda: callback(1)).pack()
Button(text=dva,   command=lambda: callback(2)).pack()
...

 



Petr Prikryl [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
10.11.2006 11:56
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






superman
 Roman Miklóš
  V trede Statické metody v Pythonu 
  (http://www.py.cz/pipermail/python/2006-November/004991.html)
  superman napisal:
... map,filter a podobné (což prý v další verzi Pythonu nebude...
 
 [...] Zajímavý je blog Rossuma:
 http://www.artima.com/weblogs/viewpost.jsp?thread=98196
 
 Nedávno jsem od něj četl, že v Pythonu není podmíněné přiřazení,
 ani přiřazení není výrazem, neboť by to příliš připomínalo C. Teď 
 píše, že lambda příliš připomíná Lisp, nebo Scheme, tudíž musí ven. 
 Já bych doporučoval vůbec s tímto příastupem škrtnout celý Python, 
 protože až příliš připomíná programovací jazyk.

O osudu lambda se diskutovalo na comp.lang.python. Osobně jsem
lambda nikdy nepotřeboval. Jakékoliv jeho použití v Pythonu
se podle mě dá jednoduše přepsat bez lambda způsobem, který
je proti lambda přehlednější a srozumitelnější.

Přiřazení jako výraz působí komplikace protože se 
v boolovských výrazech může poplést == s =.

Podmíněný výraz je novinkou v Python 2.5.

Python je procedurální a nikoliv funkcionální jazyk.
Z funkcionálních zápisů v něm  fungují jen ty věci,
které se dají JEDNODUŠE převést na procedurální postup.
Jiné výhody funkcionálních jazyků zde odpadají (například
automatická paralelizace výpočtu).

Z The Zen of Python, by Tim Peters bych k tomu vybral...

Simple is better than complex.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
There should be one-- and preferably only one --obvious way to do it.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.

Navrhuji rozebrat několik případů, kde se používají
lambda, map, filter, reduce a pohádat se o alternativním
zápisu jinými prostředky jazyka Python ;-)

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


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Pavel Kosina
Roman Miklos napsal(a):
 2) callbacky pri widgetoch v Tkinteri: 
 * Ak je ten callback jednoducha funkcia a pouzije sa iba raz napriklad pri 
 jednom buttone, naco ju definovat sepratane pre cely skript, ked ju staci 
 zadefinovat cez lambda iba na tom mieste kde sa pouzije.

 * callback s argumentom - t.j ak chces napr. pouzit ten isty callback pri 
 viacerych buttonoch, napr.
 def callback(n):
 print button, n

 Button(text=jeden,   command=lambda: callback(1)).pack()
 Button(text=dva,   command=lambda: callback(2)).pack()
 ...
   

def callback(n):
print button, n


from functools import partial as callmeback

Button(text=jeden,   command=callmeback(callback,1).pack()
Button(text=dva,   command=callmeback(callback,2).pack()




-- 
geon
Pavel Kosina

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Roman Miklos
superman:

a = 2
if a:
   print je to tam
Já bych si přál jazyk, který striktně přikazuje napsat:
a = 2
if a != 0:
   print je to tam

Je zjavne ze toto Python prebral z Perlu, ked vznikal snazil sa vela 
prebrat z Perlu. Tam sa tiez vsetko  0 vyhodnocuje ako True a to umoznuje 
pisat tie typicke veci ako
open(IN, program.log)
or die Nejde otvorit subor\n; 

Ja osobne si myslim, ze toto uzitocne pre skriptovaci jazyk

Jde o hrubé PORUŠENÍ ZPĚTNÉ KOMPATIBILITY jazyka, a pokud vím, zatím 
žádný 
jazyk tohle nepřežil ve zdraví.

To si myslim tiez :-) 
Pamatam si (kedysi som robil numeriku aj vo Fortrane 77) ked som videl 
Fortran 90/95 tak ma to totalne rozculilo  preco sa to stale vola Fortran, 
ked je to uplne ine...Neviem jak to tam teraz vyzera, ale myslim si, ze 
zlomok tych ktori robia vo Fortrane 90/95 je mizivy proti tym co robia 
nadalej v g77.

..nemá Python vůbec nárok tyto věci z jazyka vyhazovat.

Toto si myslim tiez, lebo Python mi je jediny znamy jazyk, ktory podporuje 
3 paradigmy:
proceduralny
funkcionalny 
objektovo orientovany

A vsetky tieto 3 paradigmy su v Pythone v uplnej harmonii a mozes sa 
slobodne rozhodnut ako ich vzajomne sklbis. 
FP je tu prave urobene nenasilnou formou, neutopis sa v mnozstve zatvoriek 
ako v Scheme/LISP a jazyk je pekny (nie ako Haskell) 
Argumenty typu, co je efektivne, alebo neefektivne (ze napriklad map() je 
menej efektivny ako urobit to cez cyklus) si myslim, ze sa do tohoto 
jazyka nehodia, pretoze je to jazyk skriptovaci. /Kto chce robit efektivny 
pristup do databazy nech to robi cez nativne pristupy (COBOL, RPG) a kto 
chce robit rychle systemove veci nech si zvoli C++./
Okrem toho sa kazdy v Pythone moze rozhodnut pouzit iny pristup a nie FP.

Myslim, ze jednym z hlavnych cielov Pythonu bolo aby bol kod kompaktny a 
zrozumitelny, preto zaviedli aj povinne odsadzovanie, ktore mi na Pythone 
zo zaciatku vadilo, ale postupom casu som uznal ze to fakt kod 
standardizuje a robi ho zrozumitelnym. 
Jednou z veci ako urobit kod kompaktnejsim a na niektorych miestach aj 
zrozumitelnejsim boli prave aj prvky FP. A preto ma Guido dost prekvapil, 
ked to chce odstranit. 

Dufam, ze nejakym sposobom sa FP v Pythone zachova, bud budu k tomu 
vytvorene nejake moduly, alebo mozno vznikne iny jazyk zalozeny na Pythone 
2.x, ktoreho verzie mozu napr. konvergovat k e = 2.7182 
 

Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Roman Miklos
ok tak callmeback... 
A ako urobim bez lambda nejaku funkciu, ktora mi vrati funkciu?
Napriklad toto:

 def linear(c):
return (lambda x: c*x)

 f1=linear(1)
 f2=linear(5)
 for x in range(5):
print f1(%d)=%d, f2(%d)=%d % (x,f1(x),x,f2(x))

 
f1(0)=0, f2(0)=0
f1(1)=1, f2(1)=5
f1(2)=2, f2(2)=10
f1(3)=3, f2(3)=15
f1(4)=4, f2(4)=20





Pavel Kosina [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
10.11.2006 14:23
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






Roman Miklos napsal(a):
 2) callbacky pri widgetoch v Tkinteri: 
 * Ak je ten callback jednoducha funkcia a pouzije sa iba raz napriklad 
pri 
 jednom buttone, naco ju definovat sepratane pre cely skript, ked ju 
staci 
 zadefinovat cez lambda iba na tom mieste kde sa pouzije.

 * callback s argumentom - t.j ak chces napr. pouzit ten isty callback 
pri 
 viacerych buttonoch, napr.
 def callback(n):
 print button, n

 Button(text=jeden,   command=lambda: callback(1)).pack()
 Button(text=dva,   command=lambda: callback(2)).pack()
 ...
 

def callback(n):
print button, n


from functools import partial as callmeback

Button(text=jeden,   command=callmeback(callback,1).pack()
Button(text=dva,   command=callmeback(callback,2).pack()




-- 
geon
Pavel Kosina

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


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Pavel Kosina
Roman Miklos napsal(a):
 ok tak callmeback... 
 A ako urobim bez lambda nejaku funkciu, ktora mi vrati funkciu?
 Napriklad toto:
   
  
 f1(0)=0, f2(0)=0
 f1(1)=1, f2(1)=5
 f1(2)=2, f2(2)=10
 f1(3)=3, f2(3)=15
 f1(4)=4, f2(4)=20
   
class linear():
def __init__(self,c):
self.c=c
def __call__(self,x):
return self.c * x

f1=linear(1)
f2=linear(5)
for x in range(5):
print f1(%d)=%d, f2(%d)=%d % (x,f1(x),x,f2(x))


;-)

-- 
geon
Pavel Kosina

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Roman Miklos
ok :-) , ale s lambda sa mi to pacilo viac.




Pavel Kosina [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
10.11.2006 15:22
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






Roman Miklos napsal(a):
 ok tak callmeback... 
 A ako urobim bez lambda nejaku funkciu, ktora mi vrati funkciu?
 Napriklad toto:
 
 
 f1(0)=0, f2(0)=0
 f1(1)=1, f2(1)=5
 f1(2)=2, f2(2)=10
 f1(3)=3, f2(3)=15
 f1(4)=4, f2(4)=20
 
class linear():
def __init__(self,c):
self.c=c
def __call__(self,x):
return self.c * x

f1=linear(1)
f2=linear(5)
for x in range(5):
print f1(%d)=%d, f2(%d)=%d % (x,f1(x),x,f2(x))


;-)

-- 
geon
Pavel Kosina

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


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Petr Prikryl
Roman Miklos
 [...]
 1) pri rozvinuti argumentov s wildcard-znakmi (?, *)
 na platne cesty, kde map() a reduce() umoznuju takyto 
 kompaktny zapis:
 argument = sys.argv[1:]
 filez = reduce(operator.add, map(glob.glob, argument))

Předpokládám, že samostatný skript by mohl vypadat nějak takto:

test.py

import sys
import glob

arguments = sys.argv[1:]
files = reduce(lambda a, b: a+b, map(glob.glob, arguments), [])
print files


V tomto případě bych byl asi o dva řádky delší. Odhaduji, 
že víc lidí by rozumělo lépe tomu druhému zápisu.

test.py

import sys
import glob

arguments = sys.argv[1:]
files = []
for mask in arguments:
files.extend(glob.iglob(mask))
print files


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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Petr Prikryl
Roman Miklos
 A ako urobim bez lambda nejaku funkciu, ktora mi vrati funkciu?
 Napriklad toto:
 
  def linear(c):
 return (lambda x: c*x)
 
  f1=linear(1)
  f2=linear(5)
  for x in range(5):
 print f1(%d)=%d, f2(%d)=%d % (x,f1(x),x,f2(x))
 
  
 f1(0)=0, f2(0)=0
 f1(1)=1, f2(1)=5
 f1(2)=2, f2(2)=10
 f1(3)=3, f2(3)=15
 f1(4)=4, f2(4)=20


def linear(c):
def fn(x):
return c * x
return fn

f1=linear(1)
f2=linear(5)
for x in range(5):
print f1(%d)=%d, f2(%d)=%d % (x,f1(x),x,f2(x))


Je to prakticky stejné, jen je to pojmenované.

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Pavel Kosina
Petr Prikryl napsal(a):
 Roman Miklos
   
 [...]
 1) pri rozvinuti argumentov s wildcard-znakmi (?, *)
 na platne cesty, kde map() a reduce() umoznuju takyto 
 kompaktny zapis:
 argument = sys.argv[1:]
 filez = reduce(operator.add, map(glob.glob, argument))
 

 Předpokládám, že samostatný skript by mohl vypadat nějak takto:

 test.py
 
 import sys
 import glob

 arguments = sys.argv[1:]
 files = reduce(lambda a, b: a+b, map(glob.glob, arguments), [])
 print files
 

 V tomto případě bych byl asi o dva řádky delší. Odhaduji, 
 že víc lidí by rozumělo lépe tomu druhému zápisu.

   
Stejný počet řádků:

import sys
import glob

arguments = sys.argv[1:]
files = [glob.glob(mask) for mask in arguments]
print files

-- 
geon
Pavel Kosina

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Petr Prikryl
Pavel Kosina
 Stejný počet řádků:
 
 import sys
 import glob
 
 arguments = sys.argv[1:]
 files = [glob.glob(mask) for mask in arguments]
 print files

Jenže to dělá něco jiného ;-)

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Pavel Kosina
Petr Prikryl napsal(a):
 Pavel Kosina
   
 Stejný počet řádků:

 import sys
 import glob

 arguments = sys.argv[1:]
 files = [glob.glob(mask) for mask in arguments]
 print files
 

 Jenže to dělá něco jiného ;-)

   
hmm, tak nic.
V čem, Petře, píšeš příspěvky? Mě se tvé příspěvky řadí ve stromečku 
příspěvků vždy na absolutně divná místa, téměř nikdy ne k tomu, na který 
reaguješ ;-) Že by podnikový Exchange?


-- 
geon
Pavel Kosina

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-10 Tema obsahu Roman Miklos
-- glob_prikl.py 
import sys, glob, operator

arguments = sys.argv[1:]
files = [glob.glob(mask) for mask in arguments]
print files

argument = sys.argv[1:]
filez = reduce(operator.add, map(glob.glob, argument))
print filez

--

napr. pri pouziti:
 
glob_prikl.py  editor.py oop1*.*

ten list comprehention da toto
[['editor.py'], ['oop1.py', 'oop1.py~']]

a to druhe da toto, to je to co som chcel, t.j. vsetkky subory v jednom 
liste
['editor.py', 'oop1.py', 'oop1.py~']


Mimochodom:

1. List comprehention sa mi zda asi podobne zrozumitelny ako tie 
funktionalne prvky

2. Tento priklad mam z knihy Lutz/Ascher. Uvod do Pythonu  (alebo tak 
podobne sa to vola - vyslo to aj v Grade)
z kapitoly  9. Typicke ulohy v Pythone (je to tu: 
http://www.oreilly.de/catalog/einpythonger/chapter/ch09.html)
Takze povazoval som to za typicky postup v Pythone - zial od verzie 3 uz 
nebude
 




Petr Prikryl [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
10.11.2006 16:19
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






Pavel Kosina
 Stejný počet řádků:
 
 import sys
 import glob
 
 arguments = sys.argv[1:]
 files = [glob.glob(mask) for mask in arguments]
 print files

Jenže to dělá něco jiného ;-)

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


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-09 Tema obsahu superman
Tohle je asi nejlepší materiál co se změní v Pythonu 3000
http://www.python.org/dev/peps/pep-3100/#id68

K tomu ještě novější dovětky:
http://www.python.org/dev/peps/pep-3101/
http://www.python.org/dev/peps/pep-3102/
http://www.python.org/dev/peps/pep-3103/

Změny opravdu nebudou kosmetické.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python