<p>“低效”是你测试的东西,而不是猜测。我对此运行了几个变体(<code>isdigit()</code>,<code>re.sub()</code>,等等),只有两件事比代码更快:去掉不必要的<code>float()</code>,并且不使用<code>i</code>索引。在</p>
<p>例如</p>
<pre><code>import timeit
words = ['p2', 'p23','pp34','ppp01932','boss']
def isdigsub():
for i in range(len(words)):
float(sum(c.isdigit() for c in words[i])) / float(len(words[i]))
def isdigsub2():
for i in range(len(words)):
sum(c.isdigit() for c in words[i]) / len(words[i])
def isdigsub3():
for w in words:
sum(c.isdigit() for c in w) / len(w)
def isdigsub4():
# From user Hamms
for w in words:
len([c for c in w if c.isdigit()]) / len(w)
if __name__ == '__main__':
print(timeit.timeit('isdigsub()', setup="from __main__ import isdigsub", number=10000))
print(timeit.timeit('isdigsub2()', setup="from __main__ import isdigsub2", number=10000))
print(timeit.timeit('isdigsub3()', setup="from __main__ import isdigsub3", number=10000))
print(timeit.timeit('isdigsub4()', setup="from __main__ import isdigsub4", number=10000))
</code></pre>
<p>在一个破旧的小盒子上:</p>
^{pr2}$
<p>aaa和{a1}是目前为止最好的领先者。酒保!列出每个人的理解!在</p>