Jirka Vejrazka píše v Pá 05. 03. 2010 v 01:01 +0100: > > čili se to chová jinak než standardní tuple, je to spíš něco, čemu se říká > > generátor. > > Nojo, vida - to jsem nevedel, ze s kulatymi zavorkami to vytvori > generator, diky :) > > Generator ma tu vyhodu, ze se nic nevytvari v pameti. Zrejme je to, > kdyz se pouzije misto range (ktery interne dela list) funkce xrange > (coz je taky generator) - tohle plati pro Python 2.4 ktery ted mam > spusteny, v novejsich uz je to mozna jinak) > > >>> a = [x for x in xrange(100000000)] # vytvori v pameti list, ktery ma 100 > >>> milionu prvku (bude chvili trvat) > >>> a = (x for x in xrange(100000000)] # bleskove vytvori generator, ktery > >>> po zavolani a.next() najde a vrati "dalsi prvek v poradi" > > >>>> b=(1,2,3) > >>>> b.next() > > Traceback (most recent call last): > > File "<stdin>", line 1, in <module> > > AttributeError: 'tuple' object has no attribute 'next' > > Tohle uz je logicke, to je normalni tuple. > > > Mně se takové věci celkem líbí, ale připadne mně to nějak nedomyšlené, > > protože by celý ten generátor měl tvořit samostatnou syntaktickou > > jednotku, tj. interpret by měl nějak sežrat zápis > > > >>>> i*i for i in range(10) > > Proc, tady nejsou okolo zavorky, je to syntakticky neco uplne jineho... >
problém je v tomto: sum je standardní funkce: >>> sum(i**i for i in range(10)) tady mně to prostě uniká - když závorky patří funkci sum, tak vnitřek by měl být uzavřený do závorek taky. D. _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
