Python學習之路16——元組

來源:互聯網
上載者:User

標籤:python   編程   語言   

元組元組和列表非常相似。元組與列表不同是的元組用的是圓括弧而列表用的是方括弧。而且元組是不可變類型。
1建立元組並賦值
>>> aTuple = (123, 'string', 333.0, [1,2,3])>>> aTuple(123, 'string', 333.0, [1, 2, 3])>>> t = tuple('test')>>> t('t', 'e', 's', 't')>>> 

2訪問元組的值訪問元組的元素需要元組的切片操作,元組的切片操作和列表一樣。
>>> aTupe(1, 'two', ['lucky', 'happy'], 3.3)>>> aTupe[1:3]('two', ['lucky', 'happy'])>>> aTupe[1:]('two', ['lucky', 'happy'], 3.3)>>> aTupe[2][1]'happy'>>> 

3更新元組由於元組是不可變類型,所以程式員不能更新元組的元素。要更新元組,就必須利用舊元組片段再構造一個新元組。
>>> aTupe = aTupe[0], aTupe[1]>>> aTupe(1, 'two')

4刪除元組del aTuple
元組的操作元組和列表一樣,擁有重複*, 串連+, 成員關係in, 切片的操作。同樣的擁有str,max,min,cmp等內建函數但元組沒有列表的排序,添加,替換等操作,因為元組的不可變。
拷貝Python對象、淺拷貝和深拷貝對象賦值實際是簡單的對象引用。也就是說,當你建立一個對象,然後把這個對象賦給另一個對象的時候,Python並沒有拷貝這個對象,而是拷貝了這個對象的引用。讓我們來看一個淺拷貝
>>> hubby = person[:]>>> wifey = list(person)>>> [id(x) for x in person, hubby, wifey][140032524226712, 140032524226784, 140032524227144]>>> hubby[0] = 'joe'>>> wifey[0] = 'jane'>>> hubby, wifey(['joe', ['saving', 100.0]], ['jane', ['saving', 100.0]])>>> hubby[1][1] = 50.00>>> hubby, wifey(['joe', ['saving', 50.0]], ['jane', ['saving', 50.0]])>>> [id(x) for x in hubby][140032524156760, 140032524144512]>>> [id(x) for x in wifey][140032524223856, 140032524144512]>>> 
當hubby的帳號餘額變成50,wifey的帳號餘額也變成50了。但為什麼兩個賬戶的名字又不相同呢?字串是不可變類型,當賬戶的名字重新賦值,這兩個賬戶引用的是兩個不同的字串對象。但列表是可變類型,兩個賬戶引用的是同一個列表對象。我們可以通過觀察他們的id值來判斷。從上面的結果可以看出,兩個賬戶引用的事不同的對象,但兩個賬戶裡面的小列表是引用的相同的列表對象。這就解釋了我們的疑惑。
讓我們來看深拷貝深拷貝需要利用這個函數--copy.deepcopy()
>>> person = ['name', ['saving', 100.00]]>>> hubby = person>>> import copy>>> wifey = copy.deepcopy(person)>>> [id(x) for x in person, hubby, wifey][140032524227072, 140032524227072, 140032524227216]>>> hubby[0] = 'joe'>>> wifey[0] = 'jane'>>> hubby, wifey(['joe', ['saving', 100.0]], ['jane', ['saving', 100.0]])>>> hubby[1][1] = 50.00>>> hubby, wifey(['joe', ['saving', 50.0]], ['jane', ['saving', 100.0]])>>> [id(x) for x in hubby][140032524231544, 140032524226856]>>> [id(x) for x in wifey][140032524224096, 140032524227360]>>> 




Python學習之路16——元組

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.