Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

Что дешевле: форматирование или конкатенация?

#python #строки #форматирование


Например, мне надо задать строковую переменную, в которой надо указать номер потока.Есть
два варианта.Первый - с помощью конкатенации:

name="Thread #" + foo


Второй - с помощью форматирования:

name="Thread #%i" % foo


Я знаю, что в python строки являются immutable типом, а значит операция конкатенации
приведет к созданию новой переменной. А что на счет форматирования?
    


Ответы

Ответ 1



Конкантенация быстрее форматирования %. from timeit import default_timer as timer foo = 'FooBar' t = timer() for _ in range(100000): name = "Thread #" + foo print('Total time: {:.3f} sec'.format(timer() - t)) t = timer() for _ in range(100000): name = "Thread #%s" % foo print('Total time: {:.3f} sec'.format(timer() - t)) t = timer() for _ in range(100000): name = "Thread #{}".format(foo) print('Total time: {:.3f} sec'.format(timer() - t)) t = timer() for _ in range(100000): name = f"Thread {foo}" print('Total time: {:.3f} sec'.format(timer() - t)) Результат: Total time: 0.018 sec Total time: 0.029 sec Total time: 0.044 sec Total time: 0.018 sec

Ответ 2



Обычная конкатенация , судя результатам измерения в статье по ссылке, с помощью оператора '+' быстрее любых других в Python - https://tproger.ru/translations/speedy-string-concatenation-python/

Ответ 3



Если вам нужно просто склеить две строки - используйте '+'. Если вам нужно склеить больше двух строк - используйте форматирование, как по мне - лучше str.format. Никогда не склеивайте строки через +=, лучше list + 'join'.

Комментариев нет:

Отправить комментарий