![]() |
decouple copy of a list
I want to take a copy of a list a
b=a and then do things with b which don't affect a. How can I do this? Dirk |
Re: decouple copy of a list
On Fri, Dec 10, 2010 at 7:18 PM, Dirk Nachbar <dirknbr@gmail.com> wrote:
> I want to take a copy of a list a > > b=a > > and then do things with b which don't affect a. > > How can I do this? > b = a[:] will create a copy of the list. If the elements of the list are references to mutable objects (objects of your own classes, for example), you might take a look at copy.deepcopy. -- regards, kushal |
Re: decouple copy of a list
b = list(a)
or b = a[:] |
Re: decouple copy of a list
On Freitag 10 Dezember 2010, Dirk Nachbar wrote:
> I want to take a copy of a list a > > b=a > > and then do things with b which don't affect a. > > How can I do this? > > Dirk b=a[:] -- Wolfgang |
Re: decouple copy of a list
Dirk Nachbar wrote:
> I want to take a copy of a list a > > b=a > > and then do things with b which don't affect a. > > How can I do this? > > Dirk > In [1]: a = [1,2,3] In [2]: b = a[:] In [3]: b[0] = 5 In [4]: a Out[4]: [1, 2, 3] In [5]: b Out[5]: [5, 2, 3] Alternatively, you can write import copy a = [1,2,3] b = a.copy() if the list a contains mutable objects, use copy.deepcopy (http://docs.python.org/library/copy.html) JM |
Re: decouple copy of a list
On Dec 10, 1:56*pm, Wolfgang Rohdewald <wolfg...@rohdewald.de> wrote:
> On Freitag 10 Dezember 2010, Dirk Nachbar wrote: > > > I want to take a copy of a list a > > > b=a > > > and then do things with b which don't affect a. > > > How can I do this? > > > Dirk > > b=a[:] > > -- > Wolfgang I did that but then some things I do with b happen to a as well. |
Re: decouple copy of a list
On Freitag 10 Dezember 2010, Dirk Nachbar wrote:
> > b=a[:] > > > > -- > > Wolfgang > > I did that but then some things I do with b happen to a as > well. as others said, this is no deep copy. So if you do something to an element in b, and if the same element is in a, both are changed as they are still the same objects: >>> x,y=5,6 >>> a=[x,y] >>> b=a[:] >>> id(a),id(b) (140695481867368, 140695481867512) >>> id(a[0]),id(b[0]) (33530584, 33530584) >>> a=b >>> id(a),id(b) (140695481867512, 140695481867512) -- Wolfgang |
Re: decouple copy of a list
On Dec 10, 6:06*am, Jean-Michel Pichavant <jeanmic...@sequans.com>
wrote: > Dirk Nachbar wrote: > > I want to take a copy of a list a > > > b=a > > > and then do things with b which don't affect a. > > > How can I do this? > > > Dirk > > In [1]: a = [1,2,3] > > In [2]: b = a[:] > > In [3]: b[0] = 5 > > In [4]: a > Out[4]: [1, 2, 3] > > In [5]: b > Out[5]: [5, 2, 3] > > Alternatively, you can write > > import copy > a = [1,2,3] > b = a.copy() > > if the list a contains mutable objects, use copy.deepcopy > (http://docs.python.org/library/copy.html) > > JM I'm not a pyguru, but... you didn't use copy quite right. Try instead: b= copy.copy(a) The other issue that the original person has noticed is that a list may include a reference to something. When a list is copied - if the reference is copied (not "deepcopied"], changes to the referred object will be visible in both lists, even if they are different lists. For more information, refer to the docs in the <copy> module. HTH... |
Re: decouple copy of a list
On Dec 10, 8:48*am, Dirk Nachbar <dirk...@gmail.com> wrote:
> I want to take a copy of a list a > > b=a > > and then do things with b which don't affect a. > > How can I do this? > > Dirk Not knowing the particulars, you may have to use: import copy b=copy.deepcopy(a) |
Re: decouple copy of a list
cassiope wrote:
>> Alternatively, you can write >> >> import copy >> a = [1,2,3] >> b = a.copy() >> >> >> JM >> > > I'm not a pyguru, but... you didn't use copy quite right. > Try instead: b= copy.copy(a) > > You're right, you're not a python guru so don't even try to contradict me ever again. .... :D of course I did it completly wrong. I don't know what happened in my brain at that time, maybe nothing and that's the point. JM |
| All times are GMT. The time now is 02:32 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.