Какой самый эффективный метод конкатенации строк в Python? - PullRequest
123 голосов
/ 22 августа 2009

Есть ли эффективный метод массовой массовой конкатенации строк в Python (например, StringBuilder в C # или StringBuffer в Java)? Я нашел следующие методы здесь :

  • Простая конкатенация с использованием +
  • Использование списка строк и join метод
  • Использование UserString из MutableString module
  • Использование массива символов и модуля array
  • Использование cStringIO из StringIO модуля

Но что вы, эксперты, используете или предлагаете и почему?

[ Смежный вопрос здесь ]

Ответы [ 11 ]

0 голосов
/ 30 января 2013

Вдохновленный бенчмарками @ JasonBaker, вот простой пример сравнения 10 "abcdefghijklmnopqrstuvxyz" строк, показывающий, что .join() быстрее; даже при этом крошечном увеличении переменных:

катенация

>>> x = timeit.Timer(stmt='"abcdefghijklmnopqrstuvxyz" + "abcdefghijklmnopqrstuvxyz" + "abcdefghijklmnopqrstuvxyz" + "abcdefghijklmnopqrstuvxyz" + "abcdefghijklmnopqrstuvxyz" + "abcdefghijklmnopqrstuvxyz" + "abcdefghijklmnopqrstuvxyz" + "abcdefghijklmnopqrstuvxyz" + "abcdefghijklmnopqrstuvxyz" + "abcdefghijklmnopqrstuvxyz" + "abcdefghijklmnopqrstuvxyz"')
>>> x.timeit()
0.9828147209324385

Регистрация

>>> x = timeit.Timer(stmt='"".join(["abcdefghijklmnopqrstuvxyz", "abcdefghijklmnopqrstuvxyz", "abcdefghijklmnopqrstuvxyz", "abcdefghijklmnopqrstuvxyz", "abcdefghijklmnopqrstuvxyz", "abcdefghijklmnopqrstuvxyz", "abcdefghijklmnopqrstuvxyz", "abcdefghijklmnopqrstuvxyz", "abcdefghijklmnopqrstuvxyz", "abcdefghijklmnopqrstuvxyz", "abcdefghijklmnopqrstuvxyz"])')
>>> x.timeit()
0.6114138159765048
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...