In python : I have 2 pieces of code behaving different when I modify values:
X = Y = Number
x = y = 2
x = 3print(x)
print(y)Output:
3
2
X = Y = [List]
x = y = ['a','b']
x[0] = 'd'print(x)
print(y)Output:
['d', 'b']
['d', 'b']
Why don't LISTS respect the original value of variable Y if X is changed?
Answer
These two cases are more different than they seem, and it isn't because of the types involved.
x = 3
This changes what value x is looking at. Reassigning x using = does not change the 3. It wouldn't matter if the right hand side were a int, or a list. Whatever is on the right is put into the variable on the left.
x[0] = 'd'
This looks the same, but it's actually quite different. Instead of a simple reassignment, this is actually internally translated to
x.__setitem__(0, 'd')
Instead of being just a reassignment, this is actually a mutative operation that changes the object x is holding.
So the reason the latter acts differently is that instead of changing what object x is holding, you're altering the object itself that x is holding.
You can tell the two cases apart based on what's on the left of =. If the left is a simple variable name (x =), it's a plain reassignment. If the left side uses [] (x[0] =) or anything other kind of "accessor" syntax like a . (x.attr =), you're altering the object that x is holding.
Looking for help with my program. There is a text file with 5 first and last names and a number grade corresponding to each person. The task is to create a user name and change the number grade to a le…
I am new to python. please help me how I should proceed.
The following dataframe contains large blocks of NaNs. # Fill the NAs with mean only for 2 or less consecutive values of NAs. # Refer to the d…
I have two dictionaries:dict_1 = ({a:1, b:2,c:3})
dict_2 = ({x:4,y:5,z:6})I want to take the keys from dict_1 and values from dict_2
and make a new dict_3dict_3 = ({a:4,b:5,c:6})
It is very common to have struct-like types that are not expected to be modified by distant copyholders.A string is a basic example, but thats an easy case because its excusably immutable -- Python is …
Closed. This question needs debugging details. It is not currently accepting answers.Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to repro…
Im just starting with python and im having a problem. Ive tried various solutions, but i cant update the field that says 19. When i click on plus, i want it to be 20, then 21,... and when i click - it …
Closed. This question needs to be more focused. It is not currently accepting answers.Want to improve this question? Update the question so it focuses on one problem only by editing this post.Closed 5…
I am new to Python and Im sure that Im doing something wrong - I would like to ask a user for three numbers and print their sum, heres my current code:for i in range(0, 3):total = Nonenum = input(Pleas…
I want to multiply a list of numbers, by a ndarray, that is, each number in the list multiply by the first ndarray.
This is the list:
list1 = [840,845,897]This is the list of ndarray
list = df[Example]…
This question already has answers here:Strange result when removing item from a list while iterating over it in Python(12 answers)Closed 9 years ago.class Sample:def __init__(self):self.lst_report_foot…