[python] Spojovani retezcu: (bylo: Rekurzivní generátor v Pythonu 3?)

Honza Král honza.kral na gmail.com
Neděle Srpen 28 17:51:44 CEST 2016


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


2016-08-28 17:40 GMT+02:00 Petr Messner <petr.messner na gmail.com>:
> Díky Honzo za odkaz.
>
> Jinak - Python, Ruby, Java, C++, na jazyku nezáleží... Musím vědět, jestli daná operace manipuluje s některým svým operandem, nebo vytváří novou hodnotu. A protože jsou stringy v Pythonu immutable, tak jako programátor bych měl tušit, že se bude kopírovat. A dát si pozor na případy, kdy se bude kopírovat furt dokola.
>
> Že to pypy nějak umí optimalizovat je hezké, ale i kdybych ho používal, tak fakt není dobré spoléhat se na to, že mi překladač opraví chybu v samotném návrhu algoritmu.

stale plati, ze mnohem dulezitejsi nez kompilator je programator -
pouzivam tak to, co dava z hlediska kodu (nikoli kompilatoru nejvetsi
smysl). Python s tim pocita a je na to zarizeny.

Snazit se o takove optimalizace vetsinou prinasi vice problemu nez
uzitku. A to i kdyz odhledneme od problemu spojenych s tim, ze python
ma nekolik implementaci ktere se chovaji jinak.


>
> Petr Messner
>
> 28. 8. 2016 v 17:04, Honza Král <honza.kral na gmail.com>:
>
>> 2016-08-28 16:51 GMT+02:00 Jirka Vejrazka <jirka.vejrazka na gmail.com>:
>>> Jenom poznamka ne okraj:
>>>
>>> "nedělej skládání řetězců stylem txt += part, je to strašně pomalé (O(n^2)
>>> místo O(n)).. Z txt si udělej list a používej append: txt.append(part) a na
>>> konci "".join(txt)."
>>>
>>> Tohle platilo nekdy do vydani Pythonu 2.5. V te verzi bylo spojovani retezcu
>>> pomoci += vyrazne zrychleno a dnes uz to neni takove vykonove omezeni, jako
>>> driv.
>>
>> Pokud je tech textu vice, .join() je stale lepsi, vice detailu:
>> https://youtu.be/odjpaKL-Fsg?t=20m45s
>>
>>>
>>> Ale je fakt, ze ''.join pouzivam ze zvyku taky :)
>>>
>>>  Jirka
>>>
>>>> On 28 August 2016 at 13:52, Petr Messner <petr.messner na gmail.com> wrote:
>>>>
>>>>
>>>> co takhle tohle?
>>>>
>>>>
>>>> <verse>a b <mark sID="x"> c d</verse><verse>e f<mark eID="x"> g h</verse>
>>>>
>>>>
>>>> Oprava:
>>>>
>>>> <verse>a b <mark sID="x"/> c d</verse><verse>e f<mark eID="x"/> g
>>>> h</verse>
>>>>
>>>> PM
>>>>
>>>> _______________________________________________
>>>> Python mailing list
>>>> python na py.cz
>>>> http://www.py.cz/mailman/listinfo/python
>>>>
>>>> Visit: http://www.py.cz
>>>
>>>
>>>
>>> _______________________________________________
>>> Python mailing list
>>> python na py.cz
>>> http://www.py.cz/mailman/listinfo/python
>>>
>>> Visit: http://www.py.cz
>> _______________________________________________
>> Python mailing list
>> python na py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
>> Visit: http://www.py.cz
> _______________________________________________
> Python mailing list
> python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz


Další informace o konferenci Python