Rob Gaddi wrote:
On 10/23/2017 09:29 AM, 임현준 wrote:
I am a Korean student, and I am a beginner in English and Python.;(

I can't understand about this def

If I want to print

[1,2,3,4,5]
[1,2,3,4,5,100,200]

I will make code like this, and I can understand code.


def modify(li):
      li += [100,200]

list = [1,2,3,4,5]
print(list)
modify(list)
print(list)


BUT, when I make code like this.

I will make code like this, and I can understand code.


def modify(li):
      li = li + [100,200]

list = [1,2,3,4,5]
print(list)
modify(list)
print(list)



python print

[1,2,3,4,5]
[1,2,3,4,5]

why 'li+= [100,200]'and 'li = li + [100,200]' 's print is different
please help me


Lists are mutable, they can be changed. Your call to += is equivalent to a call to li.extend([100, 200]), which changes the single existing object pointed to by the "li" reference. The second time, however, you take the existing value that "li" refers to [1,2,3,4,5], create a new object that is ([1,2,3,4,5] + [100,200]), and reassign the local reference "li" to point to that new object. Then your function ends, "li" goes out of scope, nothing points to that newly created object and it gets lost.



The problem and both solutions are great!  Thanks for posting!

Bill
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to