由于
a.index(x)执行线性搜索,然后对中的每个元素执行线性搜索,因此导致代码变慢
l。因此,对于每1M个项目,您要进行(最多)100K个比较。
将一个值转换为另一个值的最快方法是在地图中查找它。您需要创建地图,并填写原始值和所需值之间的关系。然后在列表中遇到另一个相同值时,从地图中检索该值。
这是一个通过的示例
l。可能还有进一步优化的空间,以消除
res在附加到它时重复进行重新分配的需要。
res = []conversion = {}i = 0for x in l: if x not in conversion: value = conversion[x] = i i += 1 else: value = conversion[x] res.append(value)


