新手學python疑惑(一)—— 列表內容的複製

來源:互聯網
上載者:User

標籤:字串   會同   under   pre   改變   相等   根據   序列   新手學   

疑惑在於 《python 程式設計(第2版) 董付國 清華大學出版社》第46頁

原文是:

【列表推導式】>>>freshfruit=[‘banana‘, ‘loganberry‘, ‘passion fruit‘]>>>aList=[w.strip() for w in freshfruit]等價於下面的代碼:>>>freshfruit=[‘banana‘, ‘loganberry‘, ‘passion fruit‘]>>>for i, v in enumerate(freshfruit):    freshfruit[i]=v.strip()同時,也等價於>>>freshfruit=[‘banana‘, ‘loganberry‘, ‘passion fruit‘]>>>freshfruit=list(map(str.strip, freshfruit))

關鍵疑惑點在於最後一行代碼中的 map(str.strip, freshfruit) 

根據上一條隨筆, map(A, B)函數是 把 B 代入 A 中 返回結果,按這個來看,那麼原文應該是 把列表 freshfruit 中的元素代入 str.strip 中,可是 str.strip 是什麼呢?! 

先來看看這些代碼輸出的結果是什麼:

[‘banana‘, ‘loganberry‘, ‘passion fruit‘]

結果竟然與 原來的列表(freshfruit) 內容一樣

判斷 id(freshfruit) == id(aList)  答案是 False

故可知道這些代碼作用是 列表內容的複製,而不是記憶體位址的複製,即不是 ‘is’ 的關係,而是 ‘==’ 的關係。

到這裡就能明白 列表的複製 不能是 A = B 這麼簡單,因為這樣就是記憶體位址的相等,改變其中一個列表就會同樣對另一個列表進行改變。

比如說:

>>> oldlist = [‘a‘, ‘b‘, ‘c‘]>>> newlist = oldlist>>> oldlist[‘a‘, ‘b‘, ‘c‘]>>> newlist[‘a‘, ‘b‘, ‘c‘]>>> newlist.append(‘d‘)>>> newlist[‘a‘, ‘b‘, ‘c‘, ‘d‘]>>> oldlist[‘a‘, ‘b‘, ‘c‘, ‘d‘]

改變了 newlist 也會對 oldlist 進行改變。

>>> id(oldlist)1625304>>> id(newlist)1625304>>> newlist is newlistTrue

記憶體位址一樣。

那麼回到原來的疑惑, str.strip 到底是什嗎?

到這裡我才忽然明白了, 根據 strip()函數 的意思, Python strip() 方法用於移除字串頭尾指定的字元(預設為空白格或分行符號)或字元序列。——by 菜鳥教程

而書本上的那段代碼其實是這樣的:

>>>freshfruit=[‘  banana ‘, ‘  loganberry  ‘, ‘passion fruit  ‘]

在字元前後是加了幾個空格的,而不是像我最開始敲的代碼一樣沒有空格。

★這就解釋了其實書本上代碼的意思是 去除空格 ,而不是我以為的 列表內容的複製★

疑惑解決!

新手學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.