Diez B. Roggisch wrote:
Esmail schrieb:
Could someone help confirm/clarify the semantics of the [:] operator
in Python?

a = range(51,55)

############# 1 ##################
b = a[:] # b receives a copy of a, but they are independent
 >

# The following two are equivalent
############# 2 ##################
c = []
c = a[:] # c receives a copy of a, but they are independent

No, the both above are equivalent. Both just bind a name (b or c) to a list. This list is in both cases a shallow copy of a.


############# 3 ##################
d = []
d[:] = a # d receives a copy of a, but they are independent


This is a totally different beast. It modifies d in place, no rebinding a name. So whover had a refernce to d before, now has a changed object, whereas in the two cases above, the original lists aren't touched.

To demonstrate what Diez is saying:

  a = range(51,55)
  d = []
  x = d
  d[:] = a
  print x  #hey, I didn't change x...oh, yeah

-tkc









--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to