tuple可變可不變的問題。
t = ('a', 'b', ('A', 'B')) t = ('a','b',['0']) print t t = ('a','b',['0']) tuple是不是:不能直接對單個元素賦值,但是可以重新定義整個元組?
4-9這節教學我不能很好的理解。。
t = ('a', 'b', ('A', 'B')) t = ('a','b',['0']) print t t = ('a','b',['0']) tuple是不是:不能直接對單個元素賦值,但是可以重新定義整個元組?
4-9這節教學我不能很好的理解。。
2017-05-16
舉報
2017-05-16
tuple里面存的其實只是指向這個元素的地址,是不可變的,但是地址鎖指向的內存空間里的內容是可以變的,假如你讓t0=x,其實是Python在一個新的地址另外存了一個x,然后讓tuple所指向的地址改為x所在地址,所以這個操作是不被允許的,但是你讓t = ('a','b',['0'])里的0改為其他值例如1,那么就是改變了tuple所指向的['0']所指向的地址(地址的地址),把['0']所指的地址改為指向['1'],但是tuple所指向的地址并沒有變
2017-05-16
tuple里面存的其實只是指向這個元素的地址,是不可變的,但是地址鎖指向的內存空間里的內容是可以變的,加入你讓t0=x,其實是Python在一個新的地址另外存了一個x,所以這個操作是不被允許的,但是你讓t = ('a','b',['0'])里的0改為其他值例如1,那么就是改變了tuple所指向的['0']所指向的地址(地址的地址),把['0']所指的地址改為指向['1'],但是tuple所指向的地址并沒有變
2017-05-16
第一個t寫錯了,第一個t應該是t = ('a', 'b', ['A', 'B'])
回答:list用[]表示,可變;tuple用()表示,不可變。
t = ('a', 'b', ['A', 'B']) ? ?()這個括號里面的是tuple,不可變的意思是,原來三個元素,那就永遠只能是三個元素,且指向相同。 ? ? ? ? []這個括號指的是list,內容是可變的。
這一節的問題就是想說,tuple是不能添加刪除的,但如果tuple中有list,那內容是可變的。如果你想讓tuple內容也保持不變,那就把它改成t=('a','b',('A','B'))
2017-05-16
我也是初學,以前是做java的,我的理解是,tuple定義好了里面內容是不可以改的,但是像你寫的這個情況,你并沒有改里面內容,你是重新改變了t的引用。