最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對(duì)python append 與淺拷貝的實(shí)例講解

 更新時(shí)間:2018年05月04日 09:59:35   作者:shawpan  
今天小編就為大家分享一篇對(duì)python append 與淺拷貝的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

在做Leetcode的第39題的時(shí)候,看到網(wǎng)上一個(gè)用遞歸的解法,很簡潔。于是重寫了一遍。

class Solution(object):
 def combinationSum(self, candidates, target):
 """
 :type candidates: List[int]
 :type target: int
 :rtype: List[List[int]]
 """
 result,temp = [],[]
 self.combinationSumRecu(sorted(candidates),result,0,temp,target)
 return result

 def combinationSumRecu(self, candidates, result, start, temp, target):
 if target == 0:
  result.append(temp) # 注意此處不能直接append(temp),否則是淺拷貝,之后temp.pop()時(shí)會(huì)將result中的數(shù)也pop出來
 while start < len(candidates) and candidates[start]<=target:
  temp.append(candidates[start])
  self.combinationSumRecu(candidates, result, start, temp,target-candidates[start])
  temp.pop()
  start += 1

if __name__ == '__main__':
 print Solution().combinationSum([2,3,6,7],7)

一開始沒看懂combinationSumRecu中的result.append(list(temp))為什么temp要加list,因?yàn)閠emp本身就是一個(gè)list。但是把list去掉后,結(jié)果就出現(xiàn)錯(cuò)誤。

沒改前,結(jié)果是:

[[2, 2, 3], [7]]

改成result.append(temp)后:

[[], []]

為什么會(huì)這樣呢?list在這里做了什么工作呢?

首先,為了驗(yàn)證temp每步都是一個(gè)list,我們是使用type()函數(shù)查看它的類型。

if target == 0: 
 print type(temp),temp,result 
 result.append(temp) 

輸出為:

<type 'list'> [2, 2, 3] []
<type 'list'> [7] [[7]]

可以看出,temp都是list。但是第二個(gè)result的結(jié)果不正確

可以將正確的值輸出對(duì)比一下

if target == 0: 
 print type(temp),temp,result 
 result.append(list(temp)) 

輸出為:

<type 'list'> [2, 2, 3] []
<type 'list'> [7] [[7]]

可以看出,本來第二個(gè)result應(yīng)該為[[2,2,3]],結(jié)果變成了[[7]].

于是猜想可能是append()淺拷貝問題。

append(temp)后又在后面進(jìn)行temp.pop()操作。result實(shí)際上append的是temp的引用。當(dāng)temp所指向的地址的值發(fā)生改變時(shí),result也會(huì)跟著改變。

舉個(gè)例子驗(yàn)證一下:

a = [1,2] 
b = [3,4] 
a.append(b) 
print a 
b.pop() 
print a 

輸出結(jié)果為:

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

要解決這個(gè)問題,需要對(duì)temp進(jìn)行深拷貝后append到result中。而list(temp)就會(huì)返回temp的一個(gè)深拷貝。

除了用list(temp)以外,還可以用temp[:]進(jìn)行深拷貝。

以上這篇對(duì)python append 與淺拷貝的實(shí)例講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python 字符串split的用法分享

    python 字符串split的用法分享

    python 字符串的split方法是用的頻率還是比較多的。比如我們需要存儲(chǔ)一個(gè)很長的數(shù)據(jù),并且按照有結(jié)構(gòu)的方法存儲(chǔ),方便以后取數(shù)據(jù)進(jìn)行處理。當(dāng)然可以用json的形式。但是也可以把數(shù)據(jù)存儲(chǔ)到一個(gè)字段里面,然后有某種標(biāo)示符來分割
    2013-03-03
  • Python爬取國外天氣預(yù)報(bào)網(wǎng)站的方法

    Python爬取國外天氣預(yù)報(bào)網(wǎng)站的方法

    這篇文章主要介紹了Python爬取國外天氣預(yù)報(bào)網(wǎng)站的方法,可實(shí)現(xiàn)抓取國外天氣預(yù)報(bào)信息的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • MAC下Anaconda+Pyspark安裝配置詳細(xì)步驟

    MAC下Anaconda+Pyspark安裝配置詳細(xì)步驟

    一般MAC上使用的是zsh的shell工具,需要修改zshrc文件來使環(huán)境變量永久生效(若不修改該文件,在命令行中輸入相應(yīng)的命令即可,本文給大家介紹MAC下Anaconda+Pyspark安裝配置詳細(xì)步驟,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • 利用Python模擬登錄pastebin.com的實(shí)現(xiàn)方法

    利用Python模擬登錄pastebin.com的實(shí)現(xiàn)方法

    這篇文章主要介紹了利用Python模擬登錄pastebin.com的實(shí)現(xiàn)方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • Python經(jīng)緯度坐標(biāo)轉(zhuǎn)換為距離及角度的實(shí)現(xiàn)

    Python經(jīng)緯度坐標(biāo)轉(zhuǎn)換為距離及角度的實(shí)現(xiàn)

    這篇文章主要介紹了Python經(jīng)緯度坐標(biāo)轉(zhuǎn)換為距離及角度的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • pyspark 隨機(jī)森林的實(shí)現(xiàn)

    pyspark 隨機(jī)森林的實(shí)現(xiàn)

    這篇文章主要介紹了pyspark 隨機(jī)森林的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python獲取本機(jī)外網(wǎng)ip的方法

    python獲取本機(jī)外網(wǎng)ip的方法

    這篇文章主要介紹了python獲取本機(jī)外網(wǎng)ip的方法,可實(shí)現(xiàn)從外網(wǎng)顯示IP的網(wǎng)站獲取本機(jī)IP的功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python numpy多維數(shù)組實(shí)現(xiàn)原理詳解

    Python numpy多維數(shù)組實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了python numpy多維數(shù)組實(shí)現(xiàn)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 用Python每天自動(dòng)給女友免費(fèi)發(fā)短信

    用Python每天自動(dòng)給女友免費(fèi)發(fā)短信

    大家好,本篇文章主要講的是用Python每天自動(dòng)給女友免費(fèi)發(fā)短信,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Python基本數(shù)據(jù)結(jié)構(gòu)之字典類型dict用法分析

    Python基本數(shù)據(jù)結(jié)構(gòu)之字典類型dict用法分析

    這篇文章主要介紹了Python基本數(shù)據(jù)結(jié)構(gòu)之字典類型dict用法,結(jié)合實(shí)例形式分析了Python字典類型dict概念、原理、定義及基本使用技巧,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

吐鲁番市| 澄江县| 浦城县| 双鸭山市| 黄梅县| 井冈山市| 固原市| 农安县| 桓台县| 册亨县| 梅河口市| 阳谷县| 工布江达县| 东丰县| 清丰县| 洞头县| 会同县| 五台县| 裕民县| 田阳县| 綦江县| 张家港市| 荆门市| 吉安市| 呼图壁县| 图片| 谷城县| 丰台区| 文登市| 梁山县| 且末县| 荥经县| 清原| 习水县| 襄垣县| 龙口市| 舞阳县| 永宁县| 时尚| 临湘市| 华坪县|