Заменить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])
статуса тесты Словаря и поиски являются O (1) постоянная стоимостью; путем создания словаря с значениями char(..)
вы можете избежать нескольких вызовов chr()
за значение; в зависимости от того, сколько значений повторно используется, вместо этого можно быстрее использовать char: i
и переместить вызов chr()
в список.
Что такое 'self.key', список? –