作者ck574b027 (荒围!定厝!贼!妹!)
看板Python
标题Re: [问题] if 'string' not in i:
时间Wed Aug 28 23:47:01 2013
:所以 list(a) 制造出来的新 list 中, 包含的项目与 a 的项目是
同样的东西
:注意不是值相同, 而是真的是「同一个」
1F:推 vagic:抱歉我觉得最後一段有点怪 list(a)是copy喔 跟a不是同一个 08/27 09:52
2F:→ vagic:东西 只是值相同(就是有两条list) b=a才会指到同一个东西 08/27 09:53
3F:→ vagic:也可能是我理解力不好 这里只是为了澄清观念 感谢 08/27 09:54
4F:推 timTan:楼上要讲reference 比较好 08/27 11:58
5F:推 timTan:Reference 是强调内容物,list(a)本文有强调是新的了 08/27 12:16
6F:推 ck574b027:原文是说"包含的项目"啊,并没说a和list(a)指到同一地方 08/28 16:34
7F:推 vagic:我困惑的是下一行:"注意不是值相同, 而是真的是「同一个" 08/28 18:07
8F:→ vagic:不过感谢楼上两位 我想我概念上有比较清楚 另外抱歉表达不好 08/28 18:09
恕删
若 a 是个 list 的话,b = a 与 b = list(a) 之间唯一的不同就是
# 前者的表现
b = a
b == a # True
b is a # True
b[0] == a[0] # True
b[0] is a[0] # True
# 後者的表现
b = list(a)
b == a # True
b is a # False
b[0] == a[0] # True
b[0] is a[0] # True
这样就能知道不论用哪种方法,里头的元素的确不仅值一样,连在记忆体中的位置也是,
这就是原po要表达的「真的是『同一个』」
至於 vagic 大大则是只看 a 和 b 这两个 container 的相等性,
并且理解的行为也没错,用 list() 时真的会在记忆体里放另一条 list。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.194.13.159
9F:推 vagic:原来是这个意思!!哈哈 谢谢我了解了 所以应该可以说是list 08/29 11:56
10F:→ vagic:里面装reference.. 恩感谢!! btw看到有人用id(a)check位置 08/29 12:00
11F:→ ck574b027:is 就是用 id(),平常不需要用到那个函数。 08/29 14:46
12F:推 vagic:谢谢楼上!! 08/30 06:18