序列是Python中最基本的數據結構。序列中的每一個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。html
Python有6個序列的內置類型,但最多見的是列表和元組。python
序列均可以進行的操做包括索引,切片,加,乘,檢查成員。數據結構
此外,Python已經內置肯定序列的長度以及肯定最大和最小的元素的方法。app
列表是最經常使用的Python數據類型,它能夠做爲一個方括號內的逗號分隔值出現。函數
列表的數據項不須要具備相同的類型,建立一個列表,只要把逗號分隔的不一樣的數據項使用方括號括起來便可。spa
Python中列表是可變的,這是它區別於字符串和元組的最重要的特色,一句話歸納即:列表能夠修改,而字符串和元組不能。code
list1 = ['XXXX', 'b', 3, 'c',3, '&', 'a', 3, '3', 3, 'aa', '3', 'XXXX'] list2 = ['e', 'f', 'g']
若是想要建立一個空列表,可使用以下的方式。htm
In [27]: list1=[] # 建立一個空的列表 In [28]: type(list1) Out[28]: list
在實際編寫代碼的過程當中,咱們會直接使用 list 函數生成一個列表。對象
In [29]: list2=list() # 經過list方法建立一個空的列表 In [30]: list2 Out[30]: [] In [31]: type(list2) Out[31]: list
想要向列表裏面添加元素可使用 append 方法。排序
In [33]: list2.append("a") # 向列表裏面添加"a"元素 In [34]: list2 Out[34]: ['a'] In [35]: list2.append("b") # 向列表裏面添加"b"元素 In [36]: list2 Out[36]: ['a', 'b']
接着咱們連續添加了幾個元素以後,想要刪除某個元素該怎樣呢?
In [39]: list2 Out[39]: ['a', 'b', 'cdewd', 'qewq'] In [40]: del list2[-1] # 刪除列表中最後一個元素 In [41]: list2 Out[41]: ['a', 'b', 'cdewd']
也可使用 remove 方法刪除指定下標的元素。
In [42]: list2.remove(list2[2]) # 刪除列表中下標爲2的元素 In [43]: list2 Out[43]: ['a', 'b']
舉個例子,如今有兩個非空列表 list1 和 list2,咱們將使用一些方法對兩個列表進行操做。
list1 = ['XXXX', 'b', 3, 'c',3, '&', 'a', 3, '3', 3, 'aa', '3', 'XXXX'] list2 = ['e', 'f', 'g']
將 list1 取出 ‘XXXX’ 中間的部分,造成一個新的列表list3。
list3=list1[1:-1] print(list3) list3 = [ 'b', 3, 'c',3, '&', 'a', 3, '3', 3, 'aa', '3',]
而後刪除 list3 中的特殊符號。
del list3[4] print(list3) list3 = [ 'b', 3, 'c',3, 'a', 3, '3', 3, 'aa', '3',]
統計 3 在list3中出現的次數。
print(list3.count(3))
對 list3 排序
list3.sort() print(list3)
Python 的元組與列表相似,不一樣之處在於元組的元素不能修改。
元組使用圓括號括起來,元素之間用逗號分隔;空的圓括號表示空元組;當只有一個元素時,必須以逗號結尾。
tup1 = ('abc', 'def', 1996, 2018); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a", "b", "c", "d"; # 不須要括號也能夠 type(tup3) <class 'tuple'>
元組中只包含一個元素時,須要在元素後面添加逗號,不然括號會被看成運算符使用。
In [17]: t1=1 In [18]: type(t1) Out[18]: int # 表示的是字符串 In [19]: t2=1, In [20]: type(t2) Out[20]: tuple # 表示的是元組
當對一個元素賦值時,再將該元素加入元組,那麼該元素表示的則是實際的值。
In [24]: b="qwe" In [25]: t=("a",b,"c") In [26]: t Out[26]: ('a', 'qwe', 'c')
元組可使用下標索引來訪問元組中的值,也能夠對元組進行鏈接組合,可是元組中的元素值是不容許刪除的,但咱們可使用 del 語句來刪除整個元組。
del tup; # 慎用
與字符串同樣,元組之間可使用 + 號和 * 號進行運算。這就意味着他們能夠組合和複製,運算後會生成一個新的元組。
Python 表達式 | 結果 | 描述 |
---|---|---|
len((1, 2, 3)) | 3 | 計算元素個數 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 鏈接 |
('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 複製 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print (x,) | 1 2 3 | 迭代 |
由於元組也是一個序列,因此咱們能夠訪問元組中的指定位置的元素,也能夠截取索引中的一段元素.
L = ('abc', 'qwe', 'asd')
以上面元組 L 爲例,歸納以下。
Python 表達式 | 結果 | 描述 |
---|---|---|
L[2] | 'asd' | 讀取第三個元素 |
L[-2] | 'qwe' | 反向讀取;讀取倒數第二個元素 |
L[1:] | ('qwe', 'asd') | 截取元素,從第二個開始後的全部元素。 |
字典是另外一種可變容器模型,且可存儲任意類型對象。
字典的每一個鍵值(key=>value)對用冒號(:)分割,每一個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式以下所示:
d = {key1 : value1, key2 : value2 }
字典是Python中惟一的映射類型(哈希表),其對象是可變的,可是字典的鍵必須使用不可變對象,一個字典中可使用不一樣類型的鍵值,方法能夠有:
keys()
values()
items()
咱們能夠像建立列表的方式同樣建立一個空字典。
In [11]: dict={} In [12]: type(dict) Out[12]: dict
往字典裏面添加一些數據。
In [13]: dict={'a':1,1:123} In [14]: dictOut[14]: {1: 123, 'a': 1} # 順序是可變的
存入字典的數據類型應該用只讀的。
In [15]: dict1={'a':1, 1:123, ('qq','wx'):'hello'} In [16]: dict1 Out[16]: {1: 123, 'a': 1, ('qq', 'wx'): 'hello'}
查看字典的長度,能夠看到咱們剛剛定義的字典有3個元素。
In [17]: len(dict1) Out[17]: 3
在 ipython 中使用tab鍵咱們能夠查看字典有多少種方法。
In [18]: dict. dict.clear dict.has_key dict.itervalues dict.setdefault dict.viewkeys dict.copy dict.items dict.keys dict.update dict.viewvalues dict.fromkeys dict.iteritems dict.pop dict.values dict.get dict.iterkeys dict.popitem dict.viewitems
查看全部的 keys 值。
In [18]: dict1.keys() Out[18]: ['a', 1, ('qq', 'wx')]
查看全部的values值,也會一樣返回一個列表,裏面是字典所存儲的全部values值。
In [19]: dict1.values() Out[19]: [1, 123, 'hello']
使用 keys 值查找 values 值。
In [16]: dict1 Out[16]: {1: 123, 'a': 1, ('qq', 'wx'): 'hello'} In [22]: dict1.get(1) Out[22]: 123
若是keys值不在所取的字典裏,不會返回值,可是給定了keys,values的話,則會返回給的values值。
In [24]: dict1.get('b') In [25]: dict1.get('b','c') Out[25]: 'c'
判斷 keys 是否存在於字典。
In [26]: 'v' in dict1 Out[26]: False In [27]: 'a' in dict1 Out[27]: True
也可使用字典的方法進行判斷。
In [28]: dict1.has_key('v') Out[28]: False In [29]: dict1.has_key('a') Out[29]: True
使用 items 能夠將字典返回爲一個列表,成爲列表以後就能夠對其遍歷,或者切片,而後獲得想要的結果。
In [16]: dict1 Out[16]: {1: 123, 'a': 1, ('qq', 'wx'): 'hello'} In [30]: dict1.items() Out[30]: [('a', 1), (1, 123), (('qq', 'wx'), 'hello')]
字典的 update 方法把兩個字典更新成一個字典:
In [35]: dict1 Out[35]: {1: 123, 'a': 1, ('qq', 'wx'): 'hello'} In [36]: dict2 Out[36]: {'e': 3, 'q': 1, 'w': 2} In [37]: dict.update(dict1,**dict2) In [38]: dict Out[38]: {1: 123, 'a': 1, 'e': 3, 'q': 1, 'w': 2, ('qq', 'wx'): 'hello'}
好比咱們能夠寫個 for 循環來遍歷出字典的 keys 和 values。
In [47]: for k in dict1: ....: print k,dict1[k] ....: a 1 1 123 ('qq', 'wx') hello
也能夠先用 items 方法讓字典返回一個列表,再進行 for 循環。
In [50]: dict1.items() Out[50]: [('a', 1), (1, 123), (('qq', 'wx'), 'hello')] In [51]: for k, v in dict1.items(): print k,v a 1 1 123 ('qq', 'wx') hello
小練習:
#!/usr/local/python3/bin/python info={} name=input("Please input a number : ") age=input("Please input your age : ") sex=input("Please input your sex(M/F) : ") info['name']=name #下標爲name的存到info字典裏面 info['age']=age info['sex']=sex #print(info) #print(info.items()) for i,w in info.items(): print('%s : %s' % (i,w))
運行狀況以下:
Please input a number : zyy Please input your age : 21 Please input your sex(M/F) : F name : zyy age : 21 sex : F
參考資料: