我正在寻找一种更有效的方法来总结给定字符串中所有字符的ASCII值,仅使用标准 python(最好是 2.7)。
目前我有:
print sum(ord(ch) for ch in text)
我想强调一下,我在上面写的这个问题的主要重点和方面。
以下是这个问题的不太重要的方面,应该这样对待:
那我问它干嘛?!我已经将这种方法与嵌入一个简单的 C 代码函数进行了比较,该函数在此处使用 PyInline 执行相同的操作,似乎一个简单的 C 嵌入函数要快 17 倍。
如果没有比我建议的更快的 Python 方法(仅使用标准 Python),那么 Python 开发人员没有在核心中添加这样的实现似乎很奇怪。
建议答案的当前结果。在我的 Windows 7、i-7、Python 2.7 上:
text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
sum(ord(ch) for ch in text)
>> 0.00521324663262
sum(array.array("B", text))
>> 0.0010040770317
sum(map(ord, text ))
>> 0.00427160369234
sum(bytearray(text))
>> 0.000864669402933
C-code embedded:
>> 0.000272828426841