python中nums和nums[:]的區別


 

今天看到一種寫法:res.append(nums[:]),突然覺得nums和nums[:]表示的是同一個結果呀!

nums = [1,2,3,4,5]

print(nums)

print(nums[:])

運行結果:

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]

為什么這里不寫成res.append(nums)呢?

 

其實這兩種寫法是有區別的:

res.append(nums)是將nums這個列表對象添加進res中,

但是res.append(nums[:])是將res的一個副本添加進res中。

首先我們定義

nums = [1,3,3,4,5]

res = []

現在有個需求是:先將nums添加進res中,然后將nums中的第三個元素和第四個元素互換,再添加進res中,即我們要得到

res = [[1,2,3,4,5],[1,2,4,3,5]]

如果我們使用

res.append(nums)

nums[2],nums[3]=nums[3],nums[2]

res.append(nums)

print(res)

結果:[[1, 2, 4, 3, 5], [1, 2, 4, 3, 5]],不符合要求。

 

但是使用

res.append(nums[:])

nums[2],nums[3]=nums[3],nums[2]

res.append(nums[:])

print(res)

結果:[[1, 2, 3, 4, 5], [1, 2, 4, 3, 5]],符合要求

原因就在於如果我們直接將nums對象添加進res中,當nums這個對象發生改變時res中的nums也會發生改變。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM