Python循环效率

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)

在此先感谢您的帮助.

Mar*_*ers 7

替换 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()调用移动到列表理解.