List mutation and shared structure, Python Programming

Assignment Help:

List mutation and shared structure

Lists are mutable data  structures, which defines  that  we can actually modifies  the values  stored in their components. We do this by using element-selection statement, like a[1] on the left-hand side of an assignment expression. So, the assignment

a[1] = -3

assigns  the  second  element of a to be -3.  In more  detail,  the  left-hand side  of this  expression

1630_List mutation and shared structure.png

We have permanently modified the list named a.

We will defines the consequences of the mutability of lists; programs that change list structure can become  very  confusing, but  you  can always work  your  way  through what  is happening by drawing out the memory diagrams.Continuing the previous samples, let us remind that  a is bound directly to a pointer to a list (or a sequence of memory cells), and think  about  what  occurs if we do:

886_List mutation and shared structure 2.png

Now,  we can reference parts  of the list through b, and even modifies  the list structure that way:

 

>>> b[0]

2

>>> b[2] = 1

Notice that, because  a and b point  to the similar list, modifying b changes a!

989_List mutation and shared structure 3.png

This situation is called  aliasing : the name  b has become  an alias  for a.  Aliasing may be useful, but  it may also cause  problems, because  you  can  inadvertently modify  b (by passing it into a procedure that changes one of its structured statement, for example) when  it is very important to you to keep a unmodi?ed.

 

Another important way to change  a list is to add  or change  components. We will show adding elements to the end of a data structure, but look the Python documentation for more functions on lists. This statement

836_List mutation and shared structure 4.png

 

memory sequence), b is modified too. This is a side effect of the aliasing between a and b:

>>> b

[2, -3, 1, 9]

Often, it will be important to make a fresh copy of a list so that you can change it without affecting the  original one.   Here  are  two  similar types  to make  a copy  (use  whichever one  you  can remember):

>>> c = list(a)

>>> c = a[:]

Here is a sample of the memory at this position:

997_List mutation and shared structure 5.png

 

Now,  if we change  a component of c, it does not affect a (or b!):

 

>>> c[0] = 100

>>> c

[100, -3, 1, 9]

>>> a

[2, -3, 1, 9]

We can create crazy lists that share file within a single list:

>>> f = [1, 2, 3]

>>> g = [1, f, [f]]

472_List mutation and shared structure 6.png

 

If you want  to add  an element to a list and get a new copy at the similar time, you may do

>>> a + [1]

The + operator makes  a new list that contains the elements of both of its arguments, but does not give  any  top-level files.  All of our  functions of copying only work  reliably  if your  lists do not have other lists, because  it only copies single level of list. So example, if we did:

331_List mutation and shared structure 7.png

It is clear that if we were to modify  f, it would alter  h, so this is not a completely fresh copy.  If you have  to copy deep  structures, that  is, to create  a copy not only of the top level list structure, but  of the lists of any structures that  list has, and  the lists those  lists has,  etc., you  will have to use the Python copy.deepcopy method.

 


Related Discussions:- List mutation and shared structure

Basics of python-introduction, Basics of python-introduction Python is...

Basics of python-introduction Python is designed for easy interaction between a user and the system. It goes with  an inter­ active function  known as  a shell or listener.  T

Lcr circuit, program on damped lcr cicuit

program on damped lcr cicuit

Python game assignment, I have python game project which is due by next Tue...

I have python game project which is due by next Tuesday. Do you think that I can get it on time if I order today?

Question, Data array A has data series from 1,000,000 to 1 with step size 1...

Data array A has data series from 1,000,000 to 1 with step size 1, which is in perfect decreasing order. Data array B has data series from 1 to 1,000,000, which is in random order.

Modules, Modules As you start to write larger programs, you will want ...

Modules As you start to write larger programs, you will want  to save the function de?nitions in multiple ?les, collected together according to what  they  do.  So, for exampl

Re-writing a C++ code in Python with the help of ctypes, I have a C++ code ...

I have a C++ code (10-15 line) which i need to re-write in python with the help of ctypes library. Is it possible i can get some help with it? Thanks & regards Tanmoy

#1 - Pseudo Code, Ask question #Minimum 100 worIn this project, create the ...

Ask question #Minimum 100 worIn this project, create the pseudo code from the following request. The program must have some sort of menu that allows users to make selections to

Small Viruses, I need how to write small kind of viruses...

I need how to write small kind of viruses...

Types and declarations, Java programs are  what  is known as statically an...

Java programs are  what  is known as statically and  strongly defined.  Thus,  the  kinds  of all the variables must  be known at the time that the program is written. That seems

Lab programming, protocol rdt2.2 considers there is a bit errors between se...

protocol rdt2.2 considers there is a bit errors between sender to receiver and also from receiver to sender. So now we have to consider checking bit errors introduced in reply from

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd