Cli*_*fat 3 python performance loops
我只是想知道是否有更高效的方法来编写以下循环,因为我需要加速我的程序?
for char in data:
if char in self.key:
match += chr(self.key.index(char))
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
替换 self.key为字典; 它是针对列表的成员资格测试,以及.index()使您获得最高性能的调用; 两者都要求扫描整个列表.
使用str.join()来连接一系列字符; 构建一个新的字符串对象而不是N个新对象:
keys = {char: chr(i) for i, char in enumerate(self.key)}
match = ''.join([keys[char] for char in data if char in keys])
Run Code Online (Sandbox Code Playgroud)
字典成员资格测试和查找是O(1)常数成本; 通过使用char(..)值构建字典,您可以避免chr()每个值多次调用; 根据重复使用的值的数量,可以更快地使用它char: i并将chr()调用移动到列表理解.
| 归档时间: |
|
| 查看次数: |
1143 次 |
| 最近记录: |