擅长:python、mysql、java
<p>很简单:</p>
<pre><code>def string_length(string):
return sum(1 for char in string)
</code></pre>
<p><code>1 for char in string</code>是为字符串中的每个字符生成<code>1</code>的<a href="https://docs.python.org/3/reference/expressions.html#grammar-token-generator_expression" rel="nofollow">generator expression</a>。我们将生成器传递给<code>sum()</code>,后者将它们全部相加。你所拥有的问题是,在添加到它之前,你没有定义<code>j</code>。您需要在循环之前放置<code>j = 0</code>。还有一种方法不如我上面说的好:</p>
<pre><code>from functools import reduce # reduce() is built-in in Python 2.
def string_length(string):
return reduce(lambda x,y: x+1, string, 0)
</code></pre>
<p>它之所以工作是因为<code>reduce()</code>首先使用<em>初始</em>参数0和字符串中的第一个字符调用<code>lambda</code>函数。<code>lambda</code>函数返回其第一个参数0加1。<code>reduce()</code>然后用结果1和字符串中的下一个字符再次调用该函数。它继续这样,直到它传递了字符串中的每个字符。结果:字符串的长度。</p>