Я пытаюсь изучить Python. Может кто-то пожалуйста, помогите мне понять разницу между следующие два: а = х против а = х [:]Какая разница между 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
Попытка 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. Разница между [len (a):] = [x] и [len (a)] = [x]
- 2. В чем разница между «const X a» и «X const a», если X является классом
- 3. OCAML: Разница между let func a x = (a x) ;; и пусть функция х = ((fun a -> a) x) ;;
- 4. Python - разница между 'a' и "a"?
- 5. Разница в стоимости между «WHERE A = x» и «WHERE A IN (x)»?
- 6. В чем разница между приведениями: (A) x и x как A?
- 7. В чем разница между x = функцией (a, b, c) {} и функцией x (a, b, c) {}?
- 8. Почему + = x медленнее, чем a = a + x?
- 9. Разница между a - = b и a = a - b в Python
- 10. Как решить A * X - X * A '= 0
- 11. Какая разница между a == b и (a & b) == b
- 12. разница между печатью ('a') и 'a'
- 13. Есть ли разница между A a; и A a = A()?
- 14. В чем разница между A a; и A a() ;?
- 15. Разница между использованием «chmod a + x» и «chmod 755»
- 16. В чем разница между `* a =` и `= * a`?
- 17. В чем разница между «a» и «a»?
- 18. Как объединить экспоненты? (x ** a) ** b => x ** (a * b)?
- 19. Почему `a + = x` и` a = a + x` реализованы по-разному для вложенного списка?
- 20. Разница между «a» и «a: link»
- 21. Разница между 'a == null' и 'null == a'
- 22. разница между A aaa; и A aaa();
- 23. Разница между int * a и char * a?
- 24. Как упростить if (! In_array ($ x, $ a)) $ a [] = $ x; в php?
- 25. Разница между a = b и b = a?
- 26. Разница между a = a || б и || = б
- 27. Разница между || a = b и a = a || b в рубине?
- 28. Разница между a + = 1 и a = a + 1 в C#
- 29. В чем разница между a = a + b и a + = b?
- 30. Разница между a + = b и a = a + b в Java
Подсказка: что делает 'a.slice (0)' делать в javascript? –
Невозможно сказать, если вы не скажете, что такое 'a'. Для кортежей оба - одно и то же. – JBernardo
@JBernardo Я думаю, вы имеете в виду «[...], что такое' x'. Это верно, хотя для большинства хорошо выполненных типов (включая кортежи, что мелкая копия ничего не делает, это просто оптимизация), ее поведение идентично случаю списка, по модулю обманывая с помощью id() '/' is'. – delnan