考慮以下 Python 代碼,如果運行結束,命令列中的運行結果是什嗎?

來源:互聯網
上載者:User

標籤:back   size   bsp   結束   print   pre   color   運行   []   

1 1. l = []2 2. for i in xrange(10):3 3.     l.append({‘num’:i})4 4. print l
1 1. l = []2 2. a = {‘num’:0}3 3. for i in xrange(10):4 4.     a[‘num’] = i5 5.     l.append(a)6 6. print l

以上兩段代碼的運行結果是否相同,如果不相同,原因是什嗎?

 

上方代碼的結果:

1 1. [{‘num’:0},{‘num’:1},{‘num’:2},{‘num’:3},{‘num’:4},{‘num’:5},{‘num’:6},{‘num’:7},{‘num’:8},2 {‘num’:9}]

下方代碼結果:

 

1 1. [{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},2 {‘num’:9}]

 

 

 

 

那麼原因來了:

原因是:字典是可變對象,在下方的 l.append(a)的操作中是把字典 a 的引用傳到列表 l 中,當後
續操作修改 a[‘num’]的值的時候,l 中的值也會跟著改變,相當於淺拷貝。

考慮以下 Python 代碼,如果運行結束,命令列中的運行結果是什嗎?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.