有的时候声明的二维列表中的第一维的长度比较小,但是第二维远远大于第一维的长度,并且第二维的对应的所有位置并不是都需要使用到的时候如果直接初始化对应的二维列表会导致耗时很大,这个时候我们可以直接将第二维声明为字典的形式,当我们使用到某个位置的值的时候才进行初始化。这样可以避免在初始化的时候耗时太久的问题。下面是声明一个第二维比较大的二维列表的耗时比较,可以发现使用字典的声明方式完爆直接声明一个很大的二维列表,使用字典的方式声明第二维可以在使用到某个位置的时候才初始化。
import time
if __name__ == '__main__':
start = time.time()
dp = [dict() for i in range(5)]
end = time.time()
print(end - start)
start = time.time()
dp = [[0] * (1 << 26) for i in range(5)]
print("初始化完成")
end = time.time()
print(end - start)