注: 如下操做使用的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!!!圖片