Dagl1 Posted February 4, 2020 Share Posted February 4, 2020 (edited) Hi, I have recently started going through a python textbook and in one of the exercises I find myself not really understanding why the code does what it does. The reason why the 0+1 is there, is that in the actual program those will be the iterable (i) in a loop. The code should swap two values in a list , I guess that itself can be done more simply than this code, but I will search/figure that part out myself. I am most interested in the behaviour of the following Python 3.8.1 code (I added comments with what I THINK should/would happen). List = [5,1,2,3,4] TempList = List # Set Templist equal to List print(List[0]) # Returns 5 TempList[0] = List[0+1] #replace first element in TempList with second element of List TempList[0+1] = List[0] #replace second element of TempList with first element of List print(TempList,List) # Returns[ 1, 1, 2, 3, 4] [1, 1, 2, 3, 4] What I don't get here is, the way I understand how variables change, is that only TempList should be different now? We only 'read' the values of List[0+1] and List[0] right? (Well obviously not, but could someone show me what I am getting wrong or referring me to a source that explains this? I looked through this, but didn't see it (although I skimmed and did may have missed it): https://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences Thanks in advance, Dagl So I have found the answer, I should use: TempList = List[:] But I don't really understand why. a = 5 b = a a +=5 print(b) # returns 5, not 10 what exactly is different when we say: TempList = List from: b = a Thanks Edited February 4, 2020 by Dagl1 Link to comment Share on other sites More sharing options...
Ghideon Posted February 4, 2020 Share Posted February 4, 2020 27 minutes ago, Dagl1 said: TempList = List AFAIK python does not make a copy of objects so TempList and List points to the same object. Operations on TempList affects the objects and List points to the same object. This operation: TempList = List[:] Creates a clone of the list so there are two independent objects in memory. When using primitive types such as integers or booleans python will make a copy. This behaveour of ”values” vs ”references” may differ from language to language. https://docs.python.org/3/faq/programming.html#how-do-i-copy-an-object-in-python 1 Link to comment Share on other sites More sharing options...
Dagl1 Posted February 4, 2020 Author Share Posted February 4, 2020 Ah okay, that makes sense, thanks! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now