1. 程式人生 > >洗禮靈魂,修煉python(7)--元組,集合,不可變集合

洗禮靈魂,修煉python(7)--元組,集合,不可變集合

服務器 .cn mov src 核心 是什麽 報錯 move 之前

前面已經把列表的基本用法講解完

接著講python的幾大核心之——元組(tuple)

1.什麽是元組?

類似列表,但為不可變對象,之前提到列表是可變對象,所謂可變對象就是支持原處修改,並且在修改前後對應的內存空間裏的id依然不變,而不可變對象就是不支持原處修改,得重新賦值才行,但在重新賦值的時候,內存ID已經發生改變。

元組的特征是什麽呢?下面會解釋!

2.創建元組的兩種方式:

技術分享

註意:元組的特征是()沒錯,但是光有小括號是不行的

比如創建一個空的元組:

技術分享

沒有問題是吧,創建一個只有一個元素的元組呢:

技術分享

咋回事呢?是的,只有一個小括號是不行的,還得有一個逗號【,】:

技術分享

3.元組的方法:

技術分享

可以看到,常用的方法只有count,index,其他帶有修改意義的方法都沒有

count和indexde的方法和列表方法是一樣的,就不展示了

4.元組裏面的元素不可更改

元組和列表在實際使用上非常相似,但就是不能更改:

技術分享

報錯意思就是元組不支持修改。

你可能會有個疑問了,既然元組這麽局限,還不可以更改,那留它搞毛啊?

答:是的元組看起來沒多大用處,其實仔細想,有時候我們定義好一些數據,是不希望它被更改的,這時如果用列表,你改一下數據,我改一下數據,到底誰的數據足夠權威呢?是不是有點亂套?結合實際來看,比如百度賬號,淘寶會員名等等的,是不是在初次創建後就會提示一旦創建無法更改的。所以python官方不是不知道這個問題,而是刻意搞出這麽一個類型,方便不同的人使用。

5.元組也可以用索引訪問元素和切片:

技術分享

6.那既然元組無法更改,比如定義好一個後,我反悔了,我又相改一下可以不?可以的,但是已經不是原來那個了

方法a:

技術分享

方法b:

技術分享

7.刪除元組

技術分享

不是不可以更改嗎?按照編程常識,刪除也屬於更改啊,是的,但是你忘了之前說過的,在python中,給變量賦值並不和其他語言一樣,反而像是在其上貼上一個標簽:

這是貼上標簽後:

技術分享

這是del 刪除後:

技術分享

並且a已經處於未定義狀態

技術分享

但是此時元組(2,6,7)還存在的,並且沒有改變,python有一個回收機制,當回收機制發現內存裏的某個參數不再被使用時,就會回收它,那時才會被刪除,而且這時的刪除操作不是被del相應的。,而如果你在實際中運用的話,假如你存放在服務器裏,就會一直在的。

換句話就是你用del刪除的是刪除變量以及變量名與元組之間的聯系,元組還在的並且沒有改變。

接著,python的幾大核心之——集合(set)

1.什麽是集合:

集合同樣類似列表,集合和列表一樣是可變對象,但集合是無序的。集合的特征是花括號{}

2.創建集合的方式:

技術分享

註意,當你想創建一個空集合時,會出現一個問題:

技術分享

所以集合沒有特定語法格式,只能通過set()創建

這個dict是字典的意思,在下面一章博文會詳細講。姑且記住不能創建空集合就行

3.集合的方法:

技術分享

同樣,常見的方法有:add,clear,copy,pop,remove,update,difference,intersection,union其他都用的很少

add:添加元素:

技術分享

clear:清理所有元素,clear(),括號內不能帶參數

技術分享

copy:拷貝,復制

技術分享

pop:刪除元素,並且返回被刪除的元素打印到屏幕上,註意不能帶參數,因為pop本來裏面放的得是索引,但是集合沒有索引

技術分享

remove:刪除元素,這個要帶參數,需要刪除誰就放進去當參數

技術分享

update:原處更新集合

技術分享

也可以用另一個集合來更新本集合:

技術分享

difference,intersection和union其實分別就是差集,交集,並集,是的,你學過高中數學就很好理解了

並且這三個方法分別以【-】【&】【|】代替

技術分享

4.集合裏的元素是無序,唯一的

技術分享

無序:看起來毫無邏輯可言的排序

技術分享

5.集合不支持索引訪問元素

技術分享

說到集合,那跟著得說到不可變集合(frozenset):

1.什麽是不可變集合

其實其他和集合沒區別,就是不可更改

2.創建不可變集合:

技術分享

3.不可變集合的方法:

技術分享

發現已經沒有帶有更改意義的方法了,其實你有沒有發現,集合與不可變集合就像列表與元組的關系,是的,你想到這個就算理解了

裏面的方法和集合的方法是一樣的不做演示

其實不可變集合真的很少用,了解就好

洗禮靈魂,修煉python(7)--元組,集合,不可變集合