注: 如下操做使用的Python版本为:Python 3.7.3
今天在写基数排序的时候,因为须要建立一个0-9的bucket的list,因此我使用了以下方法建立:html
bucket = [[]] * 10
随后,我在往桶里面存放数据的时候:python
bucket[3].append(3)
结果显示:app
结果不符合个人预期,因而用id查看对象的引用后:spa
发现该list里面的list果真都是同一个!code
随后改用以下方法建立,并存放数据:htm
bucket = [ [] for x in range(10)] bucket[3].append(3)
获得的结果就符合预期了,能够看到对象的引用不同对象
查看官方文档,原来对于mul操做符有说明,以下图所示blog
使用"*"操做符是反馈 b个数的a,在同一个list中的因此list的引用都是同样了
而使用[ [] for x in range(10) ]
则至关于使用循环:排序
bucket = [] for x in range(10): bucket.append([])
天然bucket中的每一个list都是不一样的对象
得出的结论:咱们在批量建立引用对象时,不要使用Multi operator!!!图片