Функция join()
принимает итеративный параметр. Однако мне было интересно, почему:
text = 'asdfqwer'
Это:
''.join([c for c in text])
Значительно быстрее:
''.join(c for c in text)
То же самое происходит с длинными строками (т.е. text * 10000000
).
Наблюдая за объемом памяти обоих исполнений с длинными строками, я думаю, что оба они создают один и только один список символов в памяти, а затем присоединяют их к строке. Поэтому я предполагаю, что разница заключается только в том, как join()
создает этот список из генератора и как интерпретатор Python делает то же самое, когда видит [c for c in text]
. Но, опять же, я просто догадываюсь, поэтому я хотел бы, чтобы кто-то подтвердил/отклонил мои догадки.