Dictionary介紹
Dictionary定義了鍵值之間一對一的關系。
定義Dictionary
>>>d = {"server":"mpilgrim","database":"master"}
取值
>>>d["server"] #輸出mpilgrim
修改Dictionary
>>>d["database"]="pubs"
如果key已經存在則修改key對應的value值,否則添加一個key-value對
注意:dictionary的key大小寫敏感
删除dictionary元素
>>>del d['database'] #删除key為database的鍵值對
清空dictionary(删除dictionary所有元素)
>>>d.clear()
List介紹
List是一個用方括号包括起來的有序元素的集合。List可以作為以0下标開始的數組。
List定義
>>>li = ['a','b','z','example']
取List元素
>>>li[-1] #輸出'example'
說明:負數索引從list的尾部開始向前計數來存取元素。li[-n]=li[len(li) - n]。
清單切片list[start:end:step]
start可以省略,預設為0;end可以省略預設為list的長度;step可以省略,預設為1。
li[:n]總是傳回前n個元素,而li[n:]總是傳回剩下的元素。li[:]生成一個list拷貝。
添加元素
1. append向list的末尾追加單個元素
>>>li
['a','b','mpilgrim','z','example']
>>>li.append("new")
>>>li
['a','b','mpilgrim','z','example','new']
2. insert向list指定位置插入單個元素
>>>li
['a','b','mpilgrim','z','example']
>>>li.insert(2,"new")
>>>li
['a','b','new','mpilgrim','z','example']
3. extend連接配接list,将兩個list為一個
>>>li
['a','b','mpilgrim','z','example']
>>>li.extend(["two","elements"])
>>>li
['a','b','mpilgrim','z','example','new','two','elements']
append和extend差別:
1. append接受一個參數,參數可以是任何類型,并簡單地追加到list的尾部
>>>li = ['a','b','c']
>>>li.append(['d','e','f'])
>>>li
['a','b','c',['d','e','f']]
2. extend接受一個參數,參數必須是list類型,并且把該list中的每一個元素添加到原list中
>>>li = ['a','b','c']
>>>li.extend(['d','e','f'])
>>>li
['a','b','c','d','e','f']
list搜尋
index在list中查找一個值的首次出現并傳回索引值。如果沒有找到,則會抛出異常。
測試list是否含有元素
item in list
Python布爾規則:
1. 0為false,其他所有數值皆為true
2. 空串("")為false;其他所有字元串皆為true
3. 空list([])為false;其他所有list皆為true
4. 空tuple(())為false;其他所有tuple皆為true
5. 空dictionary({})為false;其他所有dictionary皆為true
list元素删除
1. remove從list中删除一個值的首次出現,如果有多個值,則隻删除第一個元素。
2. pop删除list的最後一個元素,然後傳回删除元素的值。
list運算符
1. + 連接配接list
list = list + otherlist相當于list.extend(otherlist)。但+運算符把一個新的list作為值傳回,而extend隻修改存在的list。
2. +=
li += ['two']等同于li.extend(['two'])
3. * 重複器
li = [1,2] * 3等同于 li=[1,2]+[1,2]+[1,2],即将三個list連接配接成一個
Tuple介紹
Tuple是不可變的list。Tuple是用小括号包圍的元素清單。
負數索引與list一樣從tuple的尾部開始計數。
與list一樣分片(slice)也可以使用。
Tuple與List的轉換
1. Tuple轉換為List
>>> li = list((1,2))
[1,2]
2. List轉換為Tuple
>>> tu = tuple([1,2])
(1,2)
從效果上看,tuple當機一個list,而list解凍一個tuple。
變量定義
Python也有局部變量和全局變量之分,但沒有明顯的變量聲明。變量通過首次指派産生,當超出作用範圍時自動消亡。
注:當一條指令用續行符("\")分割成多行時,後續的行可以以任何方式縮進,無需遵守Python的嚴格縮進規則。
變量引用
引用未指派的變量為報錯:NameError: There is no variable named 'x'
一次賦多值
>>> v = ('a', 'b', 'e')
>>> (x, y, z) = v
>>> x
'a'
>>> y
'b'
>>> z
'e'
說明:(x,y,z) = v 分别将v中'a','b','c'指派給變量x,y,z
連續值指派
通過range函數生成連續值清單,然後一次性指派給多個變量。
>>>range(7)
[0,2,3,4,5,6,7]
>>> (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)
>>> MONDAY
>>> TUESDAY
1
>>> SUNDAY
6
說明:内置的range函數傳回一個元素為整數的list。這個函數的簡化調用形式是接收一個上限值,然後傳回一個初始值從 0 開始的 list,它依次遞增,直到但不包含上限值。還可以傳入其它的參數來指定一個非 0 的初始值和非 1 的步長。
格式化字元串
Python 支援格式化字元串的輸出。Python中,字元串格式化使用與 C 中 sprintf 函數一樣的文法。
>>> k = "uid"
>>> v = "sa"
>>> "%s=%s" % (k, v)
'uid=sa'
說明:整個表達式的值為一個字元串。第一個 %s 被變量 k 的值替換;第二個 %s 被 v 的值替換。 (k, v) 是一個 tuple。
映射list
Python 的強大特性之一是其對 list 的解析,它提供一種緊湊的方法,可以通過對 list 中的每個元素應用一個函數,進而将一個 list 映射為另一個 list。
>>> li
[1, 9, 8, 4]
>>> li = [elem*2 for elem in li]
>>> li
[2, 18, 16, 8]
注意:對list的解析并不改變原始的list
連接配接list為單個字元串
使用字元串對象的join方法連接配接list的各個元素。
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> ";".join(["%s=%s" % (k, v) for k, v in params.items()])
'server=mpilgrim;uid=sa;database=master;pwd=secret'
說明:
1. 這裡的 join 方法将 list 中的元素連接配接成單個字元串,每個元素用一個分号隔開。分隔符不必是一個分号;它甚至不必是單個字元。它可以是任何字元串。
2. join 隻能用于元素是字元串的 list;它不進行任何的強制類型轉換。對于其他類型需要強制轉換為字元串。
>>> v = [1,2]
>>> ";".join(v)
Traceback (most recent call last):
File "", line 1, in
";".join(v)
TypeError: sequence item 0: expected str instance, int found
>>> ";".join([str(item) for item in v])
'1;2'
分割字元串
字元串的split方法,将字元串按指定分割符分割成list。
>>>s
'server=mpilgrim;uid=sa;database=master;pwd=secret'
>>> s.split(";")
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s.split(";", 1)
['server=mpilgrim', 'uid=sa;database=master;pwd=secret']
說明:split 接受一個可選的第二個參數,它是要分割的次數。