我正在学习Python。是否有人可以帮助我了解以下两者之间的区别:VS A = X A = X [:]a = x和a = x在Python中的区别是什么?
1
A
回答
5
a = x
创建一个参考:
a = [2]
x = a
print id(a)
print id(x)
产地:
39727240
39727240
所以,如果你改变a
然后x
也会改变,因为它们是相同的物体
尽管
a = x[:]
创建一个新对象
a = [2]
x = a[:]
print id(a)
print id(x)
产地:
41331528
39722056
但在这里改变a
不会改变x
,因为它们是不同的对象
1
In [648]: b = a
In [649]: b[0] = 2
In [650]: a
Out[650]: [2] <- a also changed
In [651]: b = a[:] <- Creating new object
In [652]: b[0] = 3
In [653]: b
Out[653]: [3]
In [654]: a
Out[654]: [2] <- a did not change
2
尝试t o解释:
>>> x = [1,2,3]
>>> a = x
>>> # a is reference to x - a[0] and x[0] are same variable
>>> a[0] = 4 # same as x[0]...
>>> print x # proof
[4, 2, 3]
>>> a = x[:] # a is copy of x
>>> a[2] = 5 # a[2] is not x[2]
>>> print x
[4, 2, 3]
>>> print a
[4, 2, 5]
>>>
相关问题
- 1. 如果X是类,“const X a”和“X const a”之间的区别是什么
- 2. x的值是什么? X = A ++ + ++ A + A ++
- 3. 演员之间有什么区别:(A)x和x为A?
- 4. 为什么a + = x比a = a + x慢?
- 5. A a有什么区别?和A a();?
- 6. a + = b和a = + b之间的区别是什么,a ++和++ a?
- 7. a ++和++ a或a--和--a在java中有什么区别?
- 8. a,&a和* a有什么区别?
- 9. Python - “a”和“a”的区别?
- 10. a = a + b和a + = b之间的区别是什么?
- 11. 'a'和'a'有什么区别?
- 12. 为什么当x(t)为空时输出是['a','b','a']。 Python
- 13. C中*(a [1])和*(* a + 1)之间的区别是什么?
- 14. 为什么`a + = x`和`a = a + x`为嵌套列表实现不同?
- 15. a,b = b,a + b和a = b,b = a + b在fibonacci中的区别是什么[Python]
- 16. 'a和'_l是什么区别?
- 17. (a mod 2 * x) - (a mod x)
- 18. * a = b和a =&b之间的区别是什么?
- 19. 声明“MyStuct a();”之间的区别是什么?和“MyStruct a”?
- 20. a [:] = b和a = b之间的区别是什么?
- 21. if($ a)和if($ a == 1)之间的区别是什么?
- 22. python 3中print(x)`和print(* x)`有什么区别?
- 23. Python中的if bool(x)`和if x`有什么区别吗?
- 24. if(isset($ a))和if($ a)在php中有什么区别?
- 25. 在JavaScript中,var a = 5有什么区别。和var a = 5?如
- 26. flash(a,b)和flash()。put(a,b)在PlayFramework中有什么区别?
- 27. 在git中,A..B和A ... B有什么区别?
- 28. A == B对B == A,有什么区别
- 29. int [] x;有什么区别?和int x [];?
- 30. “x!”有什么区别和“x”?
提示:a.slice(0)在javascript中做了什么? –
除非你说出'a'是什么,否则无法分辨。对于元组来说,两者是相同的东西 – JBernardo
@JBernardo我认为你的意思是“[...]什么'x'是”。尽管对于大多数行为良好的类型(包括元组,浅表副本不做任何事情只是一种优化),但它的行为与列表情况是一样的,因此模糊地使用'id()'/'is'来模糊。 – delnan