Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
536 views
in Technique[技术] by (71.8m points)

copy a list in python

Please what's the difference between this two codes in python:

white=[2,4,8,9]
black = white

and

white=[2,4,8,9]
black = white[:]

thank you so much.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The first copies a reference to the list white to the variable black

So any changes to black will also alter white and visa versa

Think of it as an alias or nickname for white

The second copies the contents of the list white to the variable black and is perhaps better written like this

black = list(white)

In this case there is no connection between the two variables black and white as it is the contents of white that are copied and not a reference to white itself.

Extra to take into account the relevant comment below (thanks Jon Clements): you can read more about deep copies vs shallow copies here Understanding dict.copy() - shallow or deep?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...