Постановка задачи : Для заданного списка слов, соединенных разделителем, я хочу поставить перед каждым словом в этом списке символ, а затем получить результат в виде строки, разделенной запятыми. Мне также любопытно, какой оптимальный способ сделать это (может быть, с помощью регулярных выражений ??)
Например, скажем, у меня есть список, определенный как:
lst = ["Hello", "this.is.a.test", "with", "items", "which.can.have.many.dots"]
Если предположить, что символ, к которому я хочу добавить префикс, является хешем (#), тогда я ожидаю получить следующий результат:
#Hello, #this.#is.#a.#test, #with, #items, #which.#can.#have.#many.#dots
Я рассчитал два метода и нашел результаты, где метод № 1 быстрее, но мне интересно, есть ли более простой подход, который я пропускаю. Обратите внимание, что ниже я использую строки нового формата, представленные в Python 3 - в основном это эквивалент {} .format ( args ).
Метод № 1
_ = f"#{', #'.join(lst).replace('.', '.#')}"
Метод № 2
_ = ', '.join([f"#{item.replace('.', '.#')}" for item in lst])
Результаты с time.time()
, повторенным для n = 100_000
прогонов:
Метод № 1 - 52 мс
Метод № 2 - 152 мс