文首,我先強調一下我是一個弱雞碼農,這個隨筆是在我學習完Python3中的元組、字典、列表,集合這四種常見數據的數據類型的一些感想,如果有什么不對的地方歡迎大家予以指正。謝謝大家啦
回歸正題:這篇隨筆討論的是列表、字典、元組、集合。因此首先對着三種數據類型進行簡要的分析是很有必要的:
1 :列表
列表的特點是以“[ ]” (后面稱之為中括號)為主要特點的數據類型。學過其他語言的小伙伴第一反應就是,這不就是一個數組么,確實我個人感覺和數組十分的相似,不過有一下不同:
a.在c++/java中數組中存放的類型是固定的,但是在python3中,列表存放的數據類型是可以不一致的。
例如(以java為例子):
int [] arr=new int[10]
在arr數組中存放的數據類型智能是int類型的,並且數組長度是固定的長度(10)
b.在java中數組長度必須申明好,你得告訴jvm你需要多大的數據空間,對應jvm會在堆里面給你開辟對應大小的存儲空間,但是列表則是不會限定大小(這點有點和java的list類似)
主要不同點在於此兩點,聰明的小伙伴會說,那這個列表是不是就是和java的list是一樣的??回答是不是,因為雖然功能相似(真的很像)但是中括號這樣方式顯然不是一個List。但是功能卻和List極其相似寧。列表是一個可迭代的對象但卻不是一個迭代器對象。同時列表是可以動態的修改原來列表中的屬性。
接着,因為列表的可變性,所以列表有一系列的BIF(內置函數)對列表進行更加便捷的操作:
append() 向列表中添加一個元素
count() 查詢列表中某個元素出現的次數
insert() insert函數一共有兩個參數,一個是下表一個是元素。意思為在某處插入某個元素
reverse() 將列表到倒轉
clear() 刪除列表中的某個元素,注意,如果元素沒有的話就會報錯(java里面理解應該是runtimeexception)
extend() 將兩個列表連接起來
pop() 將最頂端的值彈出
sort() 將列表進行排序
copy() 拷貝列表(此時位深拷貝)
index()查找某個元素所在的位置如果該元素不存在會報錯
2.字典(DIctionary)注意:在傳遞參數用(**arg)用來保存字典
通過對比學習,有過java學習經驗的同學可以將字典類比成java中的Map。他的表達形式是:{ key:value , }注意key與value的中間需要用:而不是,如果換成,那么就會變成了一個集合。與Map類似,字典的Key字段是不能夠重復的,因此可以理解是Key實現了Set接口,而Value實現了List接口。
其內置BIF有:
1.clear()---- 清楚列表中的所有值
2.keys() ----- 獲取構造函數(dict())下的所有的key
3.values()。----- 獲取構造函數(dict())下的所有的Values
....etc.
注意:空字典用{}來創建
3.元組(Tuple)注意,在函數傳遞參數時候用(*arg)來接受任意長度與個數的參數,並用元組保存
tuple的功能與list(列表)類似,它也是一個可迭代的數據類型.與list不相同的地方就是tuple是一個不可變類型。就是說一旦創建在內存中的地址就確定好了,並且里面的元素是也是伴隨着創建而固定。因而tuple沒有BIF對其數據進行修改。
特點:以(,)為特點,注意是要包含, ,單個()並不是元素的特征。tuple可以被索引和切片,注意如果被索引或者切片是生成了一個新的tuple。
4.集合 (Set)
表示一個無序不重復的序列。注意創建一個空集合可以使用{}或者set()
集合可以用來求並交補和抑或(得出的結果依舊是Set):
1.並 |
2.交 &
3.補 -
4.抑或 ^
5.互相轉換
截圖來源 https://www.cnblogs.com/cisum/p/8064145.html