Re: [python] SQLite - forma selectovaných dat

2007-01-08 Tema obsahu superman
> 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

2007-01-07 Tema obsahu radek
> > 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

2007-01-06 Tema obsahu superman
> 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

2007-01-06 Tema obsahu superman
> 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

2007-01-06 Tema obsahu radek
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

2007-01-06 Tema obsahu superman
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

2007-01-06 Tema obsahu Martin Stiborský

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

2007-01-06 Tema obsahu Lukáš Linhart
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

2007-01-06 Tema obsahu martin . stiborsky

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

2007-01-06 Tema obsahu martin . stiborsky
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

2007-01-02 Tema obsahu martin . stiborsky
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