a = [1, 2, 3]
b = a[:]
此時修改b的值,a的值不會變化,可以發現切片(__getitem__?)的回傳值和原來的串列并不共享同一記憶體
那么為什么
a[:] = [4, 5, 6]
再輸出a,a就變成[4, 5, 6]了呢?
uj5u.com熱心網友回復:
b=a,那么修改b值不會影響a,因為b只是有a的資料而已,b并不是aa[起始位置,終止位置,間隔]
當使用a[:]時,就代表重新定義了該串列。如下
a=[1,2,3]
b=a
b[2]=4
print(b)#[1,2,4]
print(a)#[1,2,3]
a[:]=[4,5,6]#相當于中心定義:a=[4,5,6]
print(a)#[4,5,6]
uj5u.com熱心網友回復:
自問自答,復制和輸出分別呼叫__setitem__()和__getitem__()兩個不同的魔術方法uj5u.com熱心網友回復:
b=a是個賦值陳述句,并不是意味著兩者等價,是先有a,才有b你動了b,a肯定不變化啊
還有,你用a[:]簡單是浪費運算式,a[:]就相當于a
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/60807.html
上一篇:提取目錄下c檔案包含關鍵字的行
