洗禮靈魂,修煉python(7)--元組,集合,不可變集合
前面已經把列表的基本用法講解完
接著講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)--元組,集合,不可變集合