轉載請注明出處:http://www.lxweimin.com/p/aa578a7e2fbe
本文出自Shawpoo的簡書
我的博客:CSDN博客
【Python學習筆記專欄】:http://blog.csdn.net/column/details/17658.html
除了上篇文章介紹的幾種數據類型之外,Python還提供了幾種內置的數據類型,有列表(list)、元組(tuple)、字典(dictionary)和集合(set)。
一、列表(list)和元組(tuple)
1、list(列表)
列表(list)是Python中最基本的數據結構。list是有序的集合,可以存放不同數據類型的數據,并且list中的每個元素的都對應著一個索引來標記其位置,且索引從0開始。
-
list的創建
創建一個list,只要把逗號分隔的不同的數據項使用方括號括起來即可。list1 = ["Python", "Android", "Java", "C++"] list2 = ["Git", "SVN", 2017, 2018] list3 = [1, 2, 3, 4, 6 ]
-
訪問list中的元素
使用索引來訪問列表中的值,索引從0開始,索引的最大值為list的長度-1。>>> list1[0] # 訪問list1列表中的第一個元素 'Python' >>> list2[2] #訪問list2列表中的第三個元素 2017
我們可以通過
len()
函數來查看列表的長度,如:>>> len(list1) 4 >>> len(list3) 5
訪問列表中最后一個元素,則索引為(列表的長度-1),倒數第二個的索引為(列表的長度-2),以此類推。 還有一種訪問方式是,索引從-1開始,-2,-3...如:
>>> list3[len(list3) - 1] 6 >>> list1[len(list1) - 1] 'C++' >>> list1[-1] 'C++'
還有一種訪問方式是
索引:
的形式,表示訪問該索引(含)之后的所有元素,例如:>>> list1[1:] ['Android', 'Java', 'C++']
-
list增加元素
list是一個可變的有序的,所以,可以往list中追加元素到末尾:
>>> list1.append("JavaScript") >>> list1 ['Python', 'Android', 'Java', 'C++', 'JavaScript']
也可以添加元素到指定位置,比如索引為1的位置:
>>> list1.insert(1, "ios") >>> list1 ['Python', 'ios', 'Android', 'Java', 'C++', 'JavaScript']
-
list修改元素
list中的元素也可以進行修改,通過索引直接進行替換:>>> list1[1] = 'Ruby' >>> list1 ['Python', 'Ruby', 'Android', 'Java', 'C++', 'JavaScript']
-
list刪除元素
list中的元素也可以刪除,刪除list中最后一個元素:>>> list1.pop() 'JavaScript' >>> list1 ['Python', 'Ruby', 'Android', 'Java', 'C++']
通過索引進行刪除:
>>> list1.pop(1) 'Ruby' >>> list1 ['Python', 'Android', 'Java', 'C++']
根據內容進行刪除:
>>> list1.remove('C++') >>> list1 ['Python', 'Android', 'Java']
通過關鍵字
def
進行刪除:>>> del list1[1] >>> list1 ['Python', 'Java']
-
list的嵌套
list的嵌套,即list中的元素也是一個list:>>> a = [1, 2, 3] >>> b = ['a', 'b', 'c'] >>> x = [a, b] >>> len(x) 2 >>> len(x[0]) 3 >>> x[0] [1, 2, 3] >>> x[1][0] 'a'
-
list運算符
list對+
和*
的操作符與字符串相似。+
號用于組合列表,*
號用于重復列表。Python表達式 結果 描述 len([1, 2, 3]) 3 list的長度 [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 組合 ['Hi~'] * 4 ['Hi~', 'Hi~', 'Hi~', 'Hi~'] 重復 3 in [1, 2, 3] True 元素是否存在于list中 for x in [1, 2, 3]: print(x, end=" ") 1 2 3 遍歷list中的元素
2、tuple(元組)
Python的tuple與list類似,不同之處在于tuple中的元素不能進行修改。而且tuple使用小括號,list使用方括號。
-
tuple的創建
tuple創建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。
創建空的tuple,直接寫小看括號即可:tuple1 = ("Python", "Android", "Java", "C++") tuple2 = (1, 2, 3, 4, 6 )
創建只有一個元素的tuple,需要在元素后面添加逗號,否則括號會被tuple3 = ()
當作運算符使用,我們可以通過type()函數
來查看類型:>>> t1 = (1) >>> type(t1) <class 'int'> # 整數類型 >>> t2 = (1,) >>> type(t2) <class 'tuple'> # tuple類型
-
tuple的修改
tuple與list的最大區別就是tuple內的元素不允許修改:
但是我們可以對tuple進行連接組合:>>> t1[0] = 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
tuple中的元素為可變的數據類型,從而使tuple“可變”:>>> t1 = (1, 2, 3) >>> t2 =('a', 'b', 'c') >>> t3 = t1 + t2 >>> t3 (1, 2, 3, 'a', 'b', 'c')
>>> t = (1, 2, ['a', 'b']) >>> l = ['a', 'b'] >>> t = (1, 2, l) >>> t (1, 2, ['a', 'b']) >>> l[0] = 'python' # 修改tuple中列表l的值 >>> t (1, 2, ['python', 'b'])
-
tuple的刪除
既然tuple是不可修改的,那么tuple中的元素也是不可刪除的,但是我們可以通過del關鍵字
將tuple直接刪除掉:>>> t = (1, 2, 3) >>> t (1, 2, 3) >>> del t >>> t Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 't' is not defined
-
tuple的索引操作和運算符
tuple的索引操作和運算符與list完全一樣。
補充:tuple(list)函數
:將list轉換為tuple,list(tuple)函數
:將tuple轉換為list:# list轉tuple: >>> l = [1, 2, 3] >>> tuple(l) (1, 2, 3) # tuple轉list: >>> t = ('a', 'b', 'c') >>> list(t) ['a', 'b', 'c']
二、字典(dictionary)和集合(set)
1、dict(字典)
字典是另一種可變的容器模型,且可存儲任意類型對象。字典的每個鍵值(key:value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號{}中 ,格式如下所示:
格式:d = {key1 : value1, key2 : value2 }
例子:d = {1:"a", 2:"b", 3:"c"}
字典的特點
1、鍵必須是唯一的,不會重復,但值則不必。
2、值可以取任何數據類型,如字符串,數字或元組,但不能為列表,但鍵必須是不可變的。-
訪問字典的元素
通過字典的key進行取值:>>> d = {"id": 2, "name":"Tom", "age": 18} >>> d["name"] 'Tom'
如果key不存在就會報錯,我們在訪問之前進行判斷是否存在這個key:
>>> 'id' in d True >>> 'sex' in d False
通過dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('sex') >>> d.get('sex', -1) -1
ps:返回None的時候Python的交互式命令行不顯示結果。
>>> d.items() # 打印所有鍵值對數據 dict_items([('id', 2), ('name', 'Tom'), ('age', 20)]) >>> d.keys() #打印dict的所有key dict_keys(['id', 'name', 'age'])
-
修改字典的元素
通過鍵取值,然后進行賦值:>>> d["age"] = 20 >>> d {'id': 2, 'name': 'Tom', 'age': 20}
-
刪除字典的元素
可以刪除字典的key和整個字典:del dict['Name'] # 刪除鍵 'Name' dict.clear() # 刪除字典 del dict # 刪除字典
dict和list的比較
dict的查找和插入的速度極快,不會隨著key的增加而變慢。但是需要占用大量的內存,內存浪費多。相反,list查找和插入的時間隨著元素的增加而增加。但是占用空間小,浪費內存很少。
2、set(集合)
set()函數是創建一個無序不重復元素集,可添加,刪除數據,還可以計算交集、差集、并集等。
-
set的語法
class set([iterable]) 參數說明: iterable -- 可迭代對象對象; >>> s = set([1, 2, 3]) >>> s {1, 2, 3}
-
set的元素操作
添加數據,可以重復添加,但會被過濾掉:
刪除數據:>>> s.add(4) >>> s {1, 2, 3, 4}
set的交集、差集、并集操作:>>> s.remove(2) >>> s {1, 3, 4}
>>> s1 = set([1, 2, 3]) >>> s2 = set([2, 3, 4]) >>> s1 & s2 # 交集 {2, 3} >>> s1 | s2 # 并集 {1, 2, 3, 4} >>> s1 - s2 # 差集 {1}
-
set的特點
set和dict的唯一區別僅在于沒有存儲對應的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變對象,因為無法判斷兩個可變對象是否相等,也就無法保證set內部“不會有重復元素”。