odnochlen
Окт. 12, 2012 00:53:54
В питоне строки, с одной стороны, неизменяемые, т.к. только неизменяемые обьекты могут использоваться в качестве ключа в хеш-массивах, а с другой стороны, str+=str2 в CPython работает на месте за O(len(str2)). Как это сделано, что, с одной стороны, строки изменяемые, а с другой - по прежнему нет?
FishHook
Окт. 12, 2012 05:30:28
A id у строки тот же остается?
PooH
Окт. 12, 2012 05:56:42
А откуда информация о сложности? Как я понимаю слияние строк сведется к вызову string_concat из stringobject.c. А там выделяется память под новую строку и копируется сначала содержимое первой, потом содержимое второй, так что O(len(str1)+len(str2)). Единственное там есть оптимизации для пустых строк.