哪种方法可以更快地计算没有空格的字符数? 哪个更Pythonic?
def sent_length(sentence):
return sum(1 for c in sentence if c != ' ')
或
def sent_length(sentence):
return len(sentence.replace(" ", ""))
或
import re
pattern = re.compile(r'\s+')
def sent_length(sentence):
return len(re.sub(pattern, '', sentence))
最佳答案
您可以从python -m timeit
获取计时:
[matt tmp] python -m timeit "sum(1 for c in 'blah blah blah' if c != ' ')"
100000 loops, best of 3: 2.96 usec per loop
[matt benchmark] python -m timeit -s "import re; pattern = re.compile(r'\s+')" "len(pattern.sub('', 'blah blah blah'))"
100000 loops, best of 3: 2.2 usec per loop
[matt tmp] python -m timeit "len(''.join('blah blah blah'.split()))"
1000000 loops, best of 3: 0.785 usec per loop
[matt tmp] python -m timeit "len('blah blah blah'.replace(' ', ''))"
1000000 loops, best of 3: 0.437 usec per loop
[matt tmp] python -m timeit "len('blah blah blah') - 'blah blah blah'.count(' ')"
1000000 loops, best of 3: 0.384 usec per loop
这将帮助您确定什么是最快的。更Python化?我会选择最快的,因为性能总是很重要。
关于python - 计算不包括空格的字符数 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186809/