84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
ringa_lee
你调用下
b.append(6) print (a, b)
就看出区别了:
前者传递引用
后者是拷贝
b=a 會讓 b 參考到 a 參考的對象
b=a
b
a
a[:] 會製造一個 a 的副本, 所以 b=a[:] 會讓 b 參考到這個副本, 也就是說 b 跟 a 現在參考到不同的對象, 只是這兩個對象是相等的 ( not the same but equivalent )
a[:]
b=a[:]
這也是為什麼表面上看上去兩者沒什麼不同, 但如果是前者, 我們更動了 b 或 a 兩者都會受到影響, 因為參考到同一個對象, 但後者彼此不影響, 因為兩者參考到不同對象。@hsfzxjy 的範例就是要指出這一點, 你可以做做實驗就能了解到其中的不同了。
我回答過的問題: Python-QA
Python有个叫做id的函数能够得到对象的地址,你打印出来看看就清楚了。直接=是引用赋值,引用原来的对象;而[:]是重新推导,会生成新的对象
a=[1,2,3,4,5] b=a c=a[:] print id(a),id(b),id(c)
你调用下
就看出区别了:
前者传递引用
后者是拷贝
b=a
會讓b
參考到a
參考的對象a[:]
會製造一個 a 的副本, 所以b=a[:]
會讓b
參考到這個副本, 也就是說b
跟a
現在參考到不同的對象, 只是這兩個對象是相等的 ( not the same but equivalent )這也是為什麼表面上看上去兩者沒什麼不同, 但如果是前者, 我們更動了
b
或a
兩者都會受到影響, 因為參考到同一個對象, 但後者彼此不影響, 因為兩者參考到不同對象。@hsfzxjy 的範例就是要指出這一點, 你可以做做實驗就能了解到其中的不同了。我回答過的問題: Python-QA
Python有个叫做id的函数能够得到对象的地址,你打印出来看看就清楚了。直接=是引用赋值,引用原来的对象;而[:]是重新推导,会生成新的对象