擅长:python、mysql、java
<p><code>string</code>是不可变的,因此,如果字符串很长,则不是每次都更新字符串的好做法。<a href="https://waymoot.org/home/python_string/" rel="nofollow noreferrer">link here</a>解释了连接字符串的各种方法,并显示了性能分析。由于迭代只进行一次,所以最好选择<code>generator expression</code>而不是{<cd3>}。有关详细信息,请查看<a href="https://stackoverflow.com/questions/47789/generator-expressions-vs-list-comprehension">discussion here </a>。在这种情况下,将<code>generator expression</code>与<code>join</code>一起使用可能会有帮助:</p>
<p>将<code>my_text</code>用于长字符串:<code>len(my_text) -> 444399</code></p>
<p>使用<code>timeit</code>进行比较:</p>
<pre><code>%%timeit
tokenAux=""
textAux=""
tokens = nltk.word_tokenize(my_text)
for token in tokens:
tokenAux = token
tokenAux = stemmer.stem(token)
textAux = textAux + " "+ tokenAux
</code></pre>
<p>结果:</p>
^{pr2}$
<p>将<code>generator expression</code>与<code>join</code>一起使用:</p>
<pre><code>%%timeit
' '.join(stemmer.stem(token) for token in nltk.word_tokenize(my_text))
</code></pre>
<p>结果:</p>
<pre><code>1 loop, best of 3: 2.93 s per loop
</code></pre>