PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
Python
[问题] a[1:3]会马上复制吗?
楼主:
why8ther
(外八喵)
2015-07-13 16:52:20
已知:
>>> a = [1,2,3,4]
>>> b = a[1:3]
b = [2, 3]
>>> b[0] = 99
b = [99, 3]
a = [1, 2, 3, 4]
由此可知,黄色那行的值并不会改动到a阵列,而是创造一个副本了
我的问题是 :
这个副本是(1) 在我呼叫a[1:3]时就被创造了?
抑或(2) 直到我改动b[0]才被创造,若不改动就永远参照本来阵列
因为最近遇到比较高的性能要求 需要弄清楚@@
第一次po文 请大家多多指教
作者: eric781101
2015-07-13 17:01:00
第二行,把a[1:3] assign给变量bb与a无关,是独立的变量
作者:
uranusjr
(â†é€™äººæ˜¯è¶…級笨蛋)
2015-07-13 17:53:00
没看 source, 但我猜应该不会, 这是很常见的最佳化如果真的需要保证, 可以改用 memory view 来替代喔我错了, 好像会 shallow copy, 没有 implicit sharing
作者:
ck574b027
(荒围!定厝!贼!妹!)
2015-07-13 20:10:00
用 b = a[:] 就很清楚了,会直接产生新物件
作者: LiloHuang (十年一刻)
2015-07-13 22:14:00
Python 的 list 并没有实作 copy-on-write
楼主:
why8ther
(外八喵)
2015-07-13 22:43:00
了解 谢谢大家 看来要改写法了QQ
作者:
bibo9901
(function(){})()
2015-07-14 11:43:00
看来你不想要复制? 那可以用 itertools.islice
继续阅读
[问题] 请问这样解释理解是正确的吗?
kobe770205
[推荐] 新手学Python有没有推荐的书
abcgo
[问题]django怎么汇入已建好的数据库?
zz654456
[问题] 依照资料中的子字串判定使用函式
chuanmaotou
[问题] python 3画图问题
tyc5116
[问题] byte array处理的问题
sonying
[问题] 基本环境设定问题
gauss02
[问题] urllib2遇到https?
henry40616
[徴人]报名线上算法和数据分析课程
aaron0121
[问题] 一次创建多个字典
sariel0322
Links
booklink
Contact Us: admin [ a t ] ucptt.com