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刪除。



猜您在找 面試題-python3 個包含n個整數的數組nums,判斷nums中是否存在三個元素,a,b,c,使得a+b+c=0 for (auto x : nums) lua -- table.nums Leetcode練習(Python):數組類:第162題:峰值元素是指其值大於左右相鄰值的元素。 給定一個輸入數組 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素並返回其索引。 數組可能包含多個峰值,在這種情況下,返回任何一個峰值所在位置即可。 你可以假設 nums[-1] = nums[n] = -∞。 刷題3:給定一個數組 nums,判斷 nums 中是否存在三個下標 a,b,c數相加等於targe且a,b,c不相等 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 【JAVA】foreach語句 -- for(int I : nums){} Leetcode練習(Python):數組類:第15題:給你一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重復的三元組。 注意:答案中不可以包含重復的三元組。 Leetcode練習(Python):數組類:第152題:給你一個整數數組 nums ,請你找出數組中乘積最大的連續子數組(該子數組中至少包含一個數字)。 最接近的三數之和(給定一個包括 n 個整數的數組 nums 和 一個目標值 target。找出 nums 中的三個整數, 使得它們的和與 target 最接近。返回這三個數的和)
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM