Python 板


LINE

以前都没注意到两者不太一样 直到我跑了下面这段码 def subsets(self, nums): def backtrack(start, end, tmp): ans.append(tmp[:]) for i in range(start, end): tmp.append(nums[i]) backtrack(i+1, end, tmp) tmp.pop() ans = [] backtrack(0, len(nums), []) return ans 假如nums=[1,2,3] 照这段码跑下去, tmp能够随着函数的呼叫持续变动, 最後ans 会返回1,2,3 [[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]] 然而如果第三行的tmp[:]改为tmp 最後只会是[[],[],[],[],[],[],[],[]] 不知道两者间的差别在哪 而这差别除了在函数呼叫有影响外, 还有什麽时候要注意呢 以往没特别打上[:]好像都没出过事@@ 用type看了一下都是<class 'list'> 我猜会不会tmp只是类似这list开头的指标 而tmp[:]才是整段list的值? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 12.185.151.146 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1598719240.A.3A8.html
1F:推 TuCH: 是的 tmp只是指标 tmp[:] == tmp.copy() 08/30 02:11
2F:→ tsaiminghan: tmp[:]是浅复制(shallow copy) 08/30 22:34
3F:推 calvinvin: 没错,对变数赋值时其实是将变数指向某段记忆体位址, 08/31 10:07
4F:→ calvinvin: 例如a=[1,2,3], b=a, c=a的意思是创出一段值为[1,2,3] 08/31 10:07
5F:→ calvinvin: 的记忆体位置,然後将a指向它,b、c则跟a也一样指向它 08/31 10:07
6F:→ calvinvin: 。透过a、b、c任一个变数使用method来修改[1,2,3]时, 08/31 10:07
7F:→ calvinvin: 指向该处的a,b,c当然也就随之而变。而赋值为list[:]时 08/31 10:07
8F:→ calvinvin: 则是建立一个新的记忆体位址,其值为list[:],修改原 08/31 10:07
9F:→ calvinvin: 本的list当然就不会影响到这新的、独立的东西。 08/31 10:07
10F:→ calvinvin: 所以你的程式码将list[:]改成list後,跑的结果是将ans 08/31 10:10
11F:→ calvinvin: 一直append上tmp,而这个tmp指向的值则是你最後将tmp 08/31 10:10
12F:→ calvinvin: 给pop完的空list。 08/31 10:10
13F:推 calvinvin: 以上是我非本科系自学新手的理解,若有观念、名词错误 08/31 10:14
14F:→ calvinvin: 烦请大大不吝纠正,若是我自以为而没回答的原po的问题 08/31 10:14
15F:→ calvinvin: ,也先说抱歉@@ 08/31 10:14







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP