慕斯王
使用带有某种静态变量的简单随机数生成器可以提高性能:import randomprev, r, g, b = None, 0, 0, 0def id_to_random_color(number): global prev, r, g, b if number != prev: r = random.random() g = random.random() b = random.random() prev = number return r, g, b, 1.0更新:正如 AndrewMcDowell 在他的评论中所述,如果输入在非连续情况下重复,则该函数可能返回不同的值。这是一个可能的解决方法:import randommemory = {}def id_to_random_color(number, memory): if not number in memory: r = random.random() g = random.random() b = random.random() memory[number] = (r, g, b, 1.0) return memory[number]进一步更新:甚至可以使用相同的函数框架来计算哈希:memory = {}def id_to_random_color(number): if not number in memory: numByte = str.encode(number) hashObj = hashlib.sha1(numByte).digest() r, g, b = hashObj[-1] / 255.0, hashObj[-2] / 255.0, hashObj[-3] / 255.0 memory[number]= (r, g, b, 1.0) return r, g, b, 1.0 else: return memory[number]尽管它的语法有点冗长,但该else语句提高了一点性能,避免了后续的内存写入和读取(如 Jake 在他的回答中所述)。