2016-03-09 1 views
0

Мне было интересно, использует ли bytearray для построения строки типа.Использование python bytearray

def build_string(pairs): 
    data = '' 
    for key, value in pairs.iteritems(): 
     data = data + '\r\n' + '%s:%s' % (key, value) 
    data = data + '\r\n\r\n' 
    return data 

будет медленнее, чем.

def build_string(pairs): 
    data = bytearray() 
    for key, value in pairs.iteritems(): 
     data.extend('%s:%s\r\n' % (key, value)) 
    data.extend('\r\n') 
    return data 

ответ

6

Вы должны просто использовать str.join()

Вам вообще не нужно включать возврат каретки (\r). Python имеет универсальную поддержку новой строки. Он будет использовать правильную строку, заканчивающуюся для ОС.

return '\n'.join('{0}:{1}'.format(k, v) for k, v in pairs.iteritems()) + '\n\n' 
+0

Я использовал этот код. http://codepad.org/zvHgPP0f кажется test2 быстрее, чем test1 и test3 – tau

+0

@tau Только для коротких списков и коротких строк. Сделайте список более длинным или используйте более длинные строки ключей и значений, и он будет экспоненциально хуже. Версия bytearray может быть немного быстрее, но зависит от того, хотите ли вы поддерживать не-ascii или нет. –