Re: [python] SQLite - forma selectovaných dat
> Zalezi na tom, co optimalizujete. Ja posledni dobou radeji preferuji > "optimalizaci" citelnosti kodu a az v pripade potreby optimalizaci > naroku na pamet, nebo rychlost. Jasně, souhlasím. > Ve Vasem priklade si myslim, ze dany objekt z pole nezmenite na typ > list, ale ze vlastne vytvorite novy, pricemz stary zustane v pameti, > dokud ho garbage collector nezahodi. A to postupne pro vsechny prvky > pole. Akorat to bude pomalejsi a mene citelne. To máte pravdu, ale původní seznam nekopíruji. > Pouziti built-in funkce map je pry rychlejsi - zajimava rozprava o > optimalizaci je tady: http://www.python.org/doc/essays/list2str.html V dynamických jazycích je skoro vždycky rychlejší použít high level konstrukci, protože tam hraje obrovskou roli zpomalovače interpretování kódu. Ing. Miloslav Ponkrác ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] SQLite - forma selectovaných dat
> > JInak, proc pouzivate for i in range(len(a)): ? Uz jsem si toho > > vsimnul driv, u jinych prispevku. Preci, kdyz chci iterovat pres > > prvky, tak musi staci for item in a: > > 1) Zvyk z jiných jazyků. Ano, to mi prislo jako nejpadnejsi duvod. Cloveka to tihne delat veci, jak je zvykly :) Nic ve zlem, ja si taky v sobe taham vzory z 6502 assembleru. > > 2) Protože taková iterace je read only. Já můžu dát for item in a, ale > už nezměním ten konkrétní prvek přímo v poli. Třeba jako v tomto případě > výsledné pole má stejný počet prvků, jen tuple se má změnit na seznam. > Vycházím z toho (možná mylně), že cokoli jiného, než iterace přes indexy > lze zařídit jedině tak, že budu mít v paměti dvě pole, první budu číst > iterací, do druhé budu vytvářet výsledek. Zatímco při iteraci přes > indexy mám jen jedno pole, nad kterým se čte i zapisuje - je to paměťově > efektivnější. > > Existuje možnost jak to udělat bez indexování a bez toho, aby v paměti > byly dočasně dvě pole? Zalezi na tom, co optimalizujete. Ja posledni dobou radeji preferuji "optimalizaci" citelnosti kodu a az v pripade potreby optimalizaci naroku na pamet, nebo rychlost. Ve Vasem priklade si myslim, ze dany objekt z pole nezmenite na typ list, ale ze vlastne vytvorite novy, pricemz stary zustane v pameti, dokud ho garbage collector nezahodi. A to postupne pro vsechny prvky pole. Akorat to bude pomalejsi a mene citelne. Pouziti built-in funkce map je pry rychlejsi - zajimava rozprava o optimalizaci je tady: http://www.python.org/doc/essays/list2str.html No, v kazdem pripade ta otazka je na miste treba pro nejake pole integeru, nad kterym se dela operace, jejiz vysledek je zase integer o stejne byte velikosti (treba deleni dvema?). A samozrejme neco jineho je, pokud ten index iterace potrebujeme (napr. pro print). Radek ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] SQLite - forma selectovaných dat
> JInak, proc pouzivate for i in range(len(a)): ? Uz jsem si toho > vsimnul driv, u jinych prispevku. Preci, kdyz chci iterovat pres > prvky, tak musi staci for item in a: Protože: 1) Zvyk z jiných jazyků. 2) Protože taková iterace je read only. Já můžu dát for item in a, ale už nezměním ten konkrétní prvek přímo v poli. Třeba jako v tomto případě výsledné pole má stejný počet prvků, jen tuple se má změnit na seznam. Vycházím z toho (možná mylně), že cokoli jiného, než iterace přes indexy lze zařídit jedině tak, že budu mít v paměti dvě pole, první budu číst iterací, do druhé budu vytvářet výsledek. Zatímco při iteraci přes indexy mám jen jedno pole, nad kterým se čte i zapisuje - je to paměťově efektivnější. Existuje možnost jak to udělat bez indexování a bez toho, aby v paměti byly dočasně dvě pole? > Indexace je zvyk z C, PHP, Pascalu apod., kde to byla nutnost. V PHP existuje stejná iterace, dokonce si tam můžete udělat i vlastní iterátor, čehož jsem hojně využíval ve svých třídách a objektech. Ale v PHP je iterátor dvojí, jeden read only jako v Pythonu a druhý s možností změnit prvek pole, a ten mi v Pythonu chybí (a nebo o něm nevím): Následující kód v PHP docela elegantně iterací přičte ke každému prvku pole trojku, aniž by se musela vytvářet kopie pole: $a = array(1,2,3,4,5); foreach ($a as &$value) $value += 3; V C++ také existuje iterace, dokonce s možností projet jen část prvků daných iterátorem: std::for_each(objekt.begin(), objekt.end(), do_for_every_item); Ing. Miloslav Ponkrác ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] SQLite - forma selectovaných dat
> JInak, proc pouzivate for i in range(len(a)): ? Uz jsem si toho > vsimnul driv, u jinych prispevku. Preci, kdyz chci iterovat pres > prvky, tak musi staci for item in a: Protože: 1) Zvyk z jiných jazyků. 2) Protože taková iterace je read only. Já můžu dát for item in a, ale už nezměním ten konkrétní prvek přímo v poli. Třeba jako v tomto případě výsledné pole má stejný počet prvků, jen tuple se má změnit na seznam. Vycházím z toho (možná mylně), že cokoli jiného, než iterace přes indexy lze zařídit jedině tak, že budu mít v paměti dvě pole, první budu číst iterací, do druhé budu vytvářet výsledek. Zatímco při iteraci přes indexy mám jen jedno pole, nad kterým se čte i zapisuje - je to paměťově efektivnější. > Indexace je zvyk z C, PHP, Pascalu apod., kde to byla nutnost. V PHP existuje stejná iterace, dokonce si tam můžete udělat i vlastní iterátor, čehož jsem hojně využíval ve svých třídách a objektech. Ale v PHP je iterátor dvojí, jeden read only jako v Pythonu a druhý s možností změnit prvek pole, a ten mi v Pythonu chybí (a nebo o něm nevím): Následující kód v PHP docela elegantně iterací přičte ke každému prvku pole trojku, aniž by se musela vytvářet kopie pole: $a = array(1,2,3,4,5); foreach ($a as &$value) $value += 3; V C++ také existuje iterace, dokonce s možností projet jen část prvků daných iterátorem: std::for_each(objekt.begin(), objekt.end(), do_for_every_item); Ing. Miloslav Ponkrác ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] SQLite - forma selectovaných dat
map(list,data) :) JInak, proc pouzivate for i in range(len(a)): ? Uz jsem si toho vsimnul driv, u jinych prispevku. Preci, kdyz chci iterovat pres prvky, tak musi staci for item in a: Indexace je zvyk z C, PHP, Pascalu apod., kde to byla nutnost. V Pythonu se da udelat dost veci jednoduseji bez indexace. Radek On 1/6/07, superman <[EMAIL PROTECTED]> wrote: > Tedy a zkoušel jste: > > a = [(1,2),(3,4)] > for i in range(len(a)): >a[i] = list(a[i]) > > Ing. Miloslav Ponkrác > > [EMAIL PROTECTED] napsal(a): > > kapitulace :) Myslel jsem si, že udělat z tuplů v poli, pole v poli, > > nebude až takový problém .. ale je .. moje pokusy nejen že > > nefungují, ale skládají ze z hromady forů a whilů .. nevím jak na > > to :( Prosím o pomoc ... díky moc > > > > Potřebuju z toho: > > data = [('1', 'test1', 'abcdefg'), ('2', 'test2', 'bflmpszv12345')] > > > > Udělat toto: > > data2 = [['1','test1','abcdefg'],['2', 'test2', 'bflmpszv12345']] > > > > ___ > > Python mailing list > > Python@py.cz > > http://www.py.cz/mailman/listinfo/python > > > > > ___ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] SQLite - forma selectovaných dat
Tedy a zkoušel jste: a = [(1,2),(3,4)] for i in range(len(a)): a[i] = list(a[i]) Ing. Miloslav Ponkrác [EMAIL PROTECTED] napsal(a): > kapitulace :) Myslel jsem si, že udělat z tuplů v poli, pole v poli, > nebude až takový problém .. ale je .. moje pokusy nejen že > nefungují, ale skládají ze z hromady forů a whilů .. nevím jak na > to :( Prosím o pomoc ... díky moc > > Potřebuju z toho: > data = [('1', 'test1', 'abcdefg'), ('2', 'test2', 'bflmpszv12345')] > > Udělat toto: > data2 = [['1','test1','abcdefg'],['2', 'test2', 'bflmpszv12345']] > > ___ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > > ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] SQLite - forma selectovaných dat
To je přesně ono :) RTFM na mě ... Díky moc ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] SQLite - forma selectovaných dat
E-mail [EMAIL PROTECTED] ze dne Saturday 06 January 2007 17:16: > > Potřebuju z toho: > data = [('1', 'test1', 'abcdefg'), ('2', 'test2', 'bflmpszv12345')] > > Udělat toto: > data2 = [['1','test1','abcdefg'],['2', 'test2', 'bflmpszv12345']] data2 = [list(t) for t in data] ? -- Lukáš Linhart pgpDu2PjRCF0f.pgp Description: PGP signature ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] SQLite - forma selectovaných dat
kapitulace :) Myslel jsem si, že udělat z tuplů v poli, pole v poli, nebude až takový problém .. ale je .. moje pokusy nejen že nefungují, ale skládají ze z hromady forů a whilů .. nevím jak na to :( Prosím o pomoc ... díky moc Potřebuju z toho: data = [('1', 'test1', 'abcdefg'), ('2', 'test2', 'bflmpszv12345')] Udělat toto: data2 = [['1','test1','abcdefg'],['2', 'test2', 'bflmpszv12345']] ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] SQLite - forma selectovaných dat
No .. tak tady jsem se docela zaseknul ... ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] SQLite - forma selectovaných dat
Zdravím, mám zase takový problémek. V selectu z databáze mám u každé položky hodnotu 'id'. Při určité operaci potřebuju vyselectované id nahradit jiným číslem, u všech položek. Napsal jsem si na to hezký cyklus ale ouha, select je totiž pole a každý vyselectovaný řádek databáze je tuple. Takže s ním nehnu. Ideální by bylo, kdyby mi sqlite vrátila select jako pole v poli, to by bylo fajn... ale jak to zařídit, na to jsem nepřišel, pochybuju že to vůbec jde. Tak kdyby někdo věděl, budu vděčen, v každém případě si to vnořené pole můžu udělat sám až ve skriptu, ale kdyby byl jednodušší způsob, líbilo by se mi to víc. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python