Python 打印一个字符重复多少次的最快方法是什么?
我正在制作一个程序,告诉我英语中的每个字母被重复了多少次。我确实做到了,但我很确定有一个更快的方法Python 打印一个字符重复多少次的最快方法是什么?,python,python-3.x,Python,Python 3.x,我正在制作一个程序,告诉我英语中的每个字母被重复了多少次。我确实做到了,但我很确定有一个更快的方法 with open('random.txt', 'r') as f: f_contents = f.read() print(f_contents.count('a')) print(f_contents.count('b')) print(f_contents.count('c')) print(f_contents.count('d')) print(f_contents.count('e')
with open('random.txt', 'r') as f:
f_contents = f.read()
print(f_contents.count('a'))
print(f_contents.count('b'))
print(f_contents.count('c'))
print(f_contents.count('d'))
print(f_contents.count('e'))
print(f_contents.count('g'))
print(f_contents.count('h'))
print(f_contents.count('i'))
print(f_contents.count('j'))
print(f_contents.count('k'))
print(f_contents.count('l'))
print(f_contents.count('m'))
print(f_contents.count('n'))
print(f_contents.count('o'))
print(f_contents.count('p'))
print(f_contents.count('q'))
print(f_contents.count('r'))
print(f_contents.count('s'))
print(f_contents.count('t'))
print(f_contents.count('u'))
print(f_contents.count('v'))
print(f_contents.count('w'))
print(f_contents.count('x'))
print(f_contents.count('y'))
print(f_contents.count('z'))
创建一个包含所有字母的列表(或者在库中在线查找一个字母)并迭代
letters = ["a", "b", "c", "d", "e", "f", "g"] # and so on...
# or use this:
letters = string.ascii_lowercase # as Cory Kramer pointed out
for letter in letters:
print(f_contents.count(letter))
使用一个。(可选)也可以使用使其更干燥:
from collections import Counter
from string import ascii_lowercase
with open('random.txt', 'r') as f:
f_contents = f.read()
counts = Counter(f_contents)
for c in ascii_lowercase:
print(counts[c])
这将在一次迭代中收集所有计数,同时重复调用
str.count
每次迭代整个字符串。收集。计数器
是您在这里的最佳选择,但在任何情况下,即使用于字符串中的字母。ascii\u小写:
也比手动键入每个字母好嗯,您要求“更快”然后接受一个慢得多的答案?不需要字母作为字符串。ascii_lowercase
已经包含了sequences,但我不知道,它将添加到答案中。主要的一点是使用循环思想,最后一次print
可以是for letter,count in counts.items():print(letter,count)
,这取决于。如果你像OP的代码所建议的那样对零计数感兴趣,你就必须迭代整个域。这是真的,很好的观点这看起来你不知道str.count的速度有多快。@superbrain,对于一个足够大的字符串和足够大的字母表,线性算法将胜过二次算法=)同样,您希望展示合理的通用方法。