<p>它对我来说很好用。你知道吗</p>
<p>正如@Slater Tyranus所写,当然要使用<code>list.count</code>->;<code>fizzes.count('fizz')</code>。如果您想做一些更复杂的计数(比如case insistive),列表理解可能会对您有所帮助。你知道吗</p>
<pre><code>>>> fizzes = ["fizz","buzz","fizz"]
>>> len([f for f in fizzes if lower(f) == 'fizz'])
2
</code></pre>
<p>或者(感谢@iCodez):</p>
<pre><code>>>> sum(1 for f in fizzes if lower(f) == 'fizz')
</code></pre>
<hr/>
<h2>对于性能迷(<strong>Python2.7</strong>)</h2>
<pre><code>>>> from timeit import timeit
>>> fizzes = [u"fizz", u"buzz"] * 10000
>>> def fizz_for():
... count = 0
... for item in fizzes:
... if item == u"fizz":
... count += 1
... return count
...
>>> timeit('__main__.fizz_for()', setup='import __main__', number=1000)
1.393934965133667
>>> fizz_len = lambda: len([f for f in fizzes if f == u'fizz'])
>>> timeit('__main__.fizz_len()', setup='import __main__', number=1000)
1.3358290195465088
>>> fizz_sum = lambda: sum(1 for f in fizzes if f == u'fizz')
>>> timeit('__main__.fizz_sum()', setup='import __main__', number=1000)
1.7232561111450195
>>> fizz_count = lambda: fizzes.count(u'fizz')
>>> timeit('__main__.fizz_count()', setup='import __main__', number=1000)
0.44240689277648926
</code></pre>
<h2>Python3.3(看起来完全相反):</h2>
<pre><code>>>> timeit('__main__.fizz_for()', setup='import __main__', number=1000)
1.5867065230013395
>>> fizz_len = lambda: len([f for f in fizzes if f == 'fizz'])
>>> timeit('__main__.fizz_len()', setup='import __main__', number=1000)
1.2898265199983143
>>> fizz_sum = lambda: sum(1 for f in fizzes if f == 'fizz')
>>> timeit('__main__.fizz_sum()', setup='import __main__', number=1000)
1.5955777620001754
>>> fizz_count = lambda: fizzes.count('fizz')
>>> timeit('__main__.fizz_count()', setup='import __main__', number=1000)
0.3196232570007851
</code></pre>
<h2>结论</h2>
<ul>
<li>如果可能,使用<code>list.count</code>。你知道吗</li>
<li>非常有趣的是,python2.7中for循环的on比<code>sum</code>快。你知道吗</li>
<li>使用<code>unicode</code>会使速度降低约30%(不是在结果中,而是在本地检查)。你知道吗</li>
</ul>