字典
字典是另一種可變容器模型,且可存儲任意類型對象。
鍵一般是唯一的,如果重複最後的一個鍵值對會替換前面的,值不需要唯一。
>>> dict = {'a': 1, 'b': 2, 'b': '3'}
>>> dict['b']
'3'
>>> dict
{'a': 1, 'b': '3'}
#值可以取任何資料類型,但鍵必須是不可變的,如字元串,數字或元組。
一個簡單的字典執行個體:
dict2 = { ‘abc’: 123, 98.6: 37 }
通路字典裡的值
把相應的鍵放入熟悉的方括弧,如下執行個體:
修改字典
向字典添加新内容的方法是增加新的鍵/值對,修改或删除已有鍵/值對如下執行個體:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8 # 更新
dict['School'] = "RUNOOB" # 添加
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
以上執行個體輸出結果:
dict['Age']: 8
dict['School']: RUNOOB
删除字典元素
能删單一的元素也能清空字典,清空隻需一項操作。
顯示删除一個字典用del指令,如下執行個體:
執行個體
dict = {‘Name’: ‘Zara’, ‘Age’: 7, ‘Class’: ‘First’}
del dict[‘Name’] # 删除鍵是’Name’的條目
dict.clear() # 清空字典所有條目
del dict # 删除字典
字典鍵的特性
字典值可以沒有限制地取任何python對象,既可以是标準的對象,也可以是使用者定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。建立時如果同一個鍵被指派兩次,後一個值會被記住
2)鍵必須不可變,是以可以用數字,字元串或元組充當,是以用清單就不行
字典内置函數&方法
Python字典包含了以下内置函數:
序号 函數及描述
1 cmp(dict1, dict2)
比較兩個字典元素。
2 len(dict)
計算字典元素個數,即鍵的總數。
3 str(dict)
輸出字典可列印的字元串表示。
4 type(variable)
傳回輸入的變量類型,如果變量是字典就傳回字典類型。
Python字典包含了以下内置方法:
1 dict.clear()
删除字典内所有元素
2 dict.copy()
傳回一個字典的淺複制
3 dict.fromkeys(seq[, val])
建立一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應的初始值
4 dict.get(key, default=None)
傳回指定鍵的值,如果值不在字典中傳回default值
5 dict.has_key(key)
如果鍵在字典dict裡傳回true,否則傳回false
6 dict.items()
以清單傳回可周遊的(鍵, 值) 元組數組
7 dict.keys()
以清單傳回一個字典所有的鍵
8 dict.setdefault(key, default=None)
和get()類似, 但如果鍵不存在于字典中,将會添加鍵并将值設為default
9 dict.update(dict2)
把字典dict2的鍵/值對更新到dict裡
10 dict.values()
以清單傳回字典中的所有值
11 pop(key[,default])
删除字典給定鍵 key 所對應的值,傳回值為被删除的值。key值必須給出。 否則,傳回default值。
12 popitem()
傳回并删除字典中的最後一對鍵和值。
清單
清單是最常用的Python資料類型,它可以作為一個方括号内的逗号分隔值出現。
Python有6個序列的内置類型,但最常見的是清單和元組。
序列都可以進行的操作包括索引,切片,加,乘,檢查成員。
清單的資料項不需要具有相同的類型
建立一個清單,隻要把逗号分隔的不同的資料項使用方括号括起來即可。如下所示:
與字元串的索引一樣,清單索引從0開始。清單可以進行截取、組合等。
通路清單中的值
使用下标索引來通路清單中的值,同樣也可以使用方括号的形式截取字元
更新清單
你可以對清單的資料項進行修改或更新,你也可以使用append()方法來添加清單項
删除清單元素
可以使用 del 語句來删除清單的元素
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 疊代
Python清單截取
Python 的清單截取執行個體如下:
>>>L = ['Google', 'Runoob', 'Taobao']
>>> L[2]
'Taobao'
>>> L[-2]
'Runoob'
>>> L[1:]
['Runoob', 'Taobao']
描述:
Python 表達式 結果 描述
L[2] ‘Taobao’ 讀取清單中第三個元素
L[-2] ‘Runoob’ 讀取清單中倒數第二個元素
L[1:] [‘Runoob’, ‘Taobao’] 從第二個元素開始截取清單
Python包含以下函數:
1 cmp(list1, list2)
比較兩個清單的元素
2 len(list)
清單元素個數
3 max(list)
傳回清單元素最大值
4 min(list)
傳回清單元素最小值
5 list(seq)
将元組轉換為清單
Python包含以下方法:
1 list.append(obj)
在清單末尾添加新的對象
2 list.count(obj)
統計某個元素在清單中出現的次數
3 list.extend(seq)
在清單末尾一次性追加另一個序列中的多個值(用新清單擴充原來的清單)
4 list.index(obj)
從清單中找出某個值第一個比對項的索引位置
5 list.insert(index, obj)
将對象插入清單
6 list.pop([index=-1])
移除清單中的一個元素(預設最後一個元素),并且傳回該元素的值
7 list.remove(obj)
移除清單中某個值的第一個比對項
8 list.reverse()
反向清單中元素
9 list.sort(cmp=None, key=None, reverse=False)
對原清單進行排序
元組
元組與清單類似,不同之處在于元組的元素不能修改。
元組使用小括号,清單使用方括号。
元組建立很簡單,隻需要在括号中添加元素,并使用逗号隔開即可。
如下執行個體:
tup1 = (‘physics’, ‘chemistry’, 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = “a”, “b”, “c”, “d”
建立空元組
tup1 = ()
元組中隻包含一個元素時,需要在元素後面添加逗号
tup1 = (50,)
元組與字元串類似,下标索引從0開始,可以進行截取,組合等。
通路元組
元組可以使用下标索引來通路元組中的值,如下執行個體:
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]
以上執行個體輸出結果:
tup1[0]: physics
tup2[1:5]: (2, 3, 4, 5)
修改元組
元組中的元素值是不允許修改的,但我們可以對元組進行連接配接組合,如下執行個體:
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# 以下修改元組元素操作是非法的。
# tup1[0] = 100
# 建立一個新的元組
tup3 = tup1 + tup2
print tup3
以上執行個體輸出結果:
删除元組
元組中的元素值是不允許删除的,但我們可以使用del語句來删除整個元組
元組運算符
與字元串一樣,元組之間可以使用 + 号和 * 号進行運算。這就意味着他們可以組合和複制,運算後會生成一個新的元組。
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 = (‘spam’, ‘Spam’, ‘SPAM!’)
L[2] ‘SPAM!’ 讀取第三個元素
L[-2] ‘Spam’ 反向讀取,讀取倒數第二個元素
L[1:] (‘Spam’, ‘SPAM!’) 截取元素
無關閉分隔符
任意無符号的對象,以逗号隔開,預設為元組
元組内置函數
Python元組包含了以下内置函數
1 cmp(tuple1, tuple2)
比較兩個元組元素。
2 len(tuple)
計算元組元素個數。
3 max(tuple)
傳回元組中元素最大值。
4 min(tuple)
傳回元組中元素最小值。
5 tuple(seq)
将清單轉換為元組。
集合
集合(set)是一個無序的不重複元素序列。
可以使用大括号 { } 或者 set() 函數建立集合,注意:建立一個空集合必須用 set() 而不是 { },因為 { } 是用來建立一個空字典。
建立格式:
parame = {value01,value02,…}
或者
set(value)
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 這裡示範的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # 快速判斷元素是否在集合内
True
>>> 'crabgrass' in basket
False
>>> # 下面展示兩個集合間的運算.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不同時包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
類似清單推導式,同樣集合支援集合推導式(Set comprehension):
>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}
集合的基本操作
1、添加元素
文法格式如下:
s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,則不進行任何操作。
還有一個方法,也可以添加元素,且參數可以是清單,元組,字典等,文法格式如下:
s.update( x )
x 可以有多個,用逗号分開。
2、移除元素
文法格式如下:
s.remove( x )
将元素 x 從集合 s 中移除,如果元素不存在,則會發生錯誤。
此外還有一個方法也是移除集合中的元素,且如果元素不存在,不會發生錯誤。格式如下所示:
s.discard( x )
我們也可以設定随機删除集合中的一個元素,文法格式如下:
s.pop()
set 集合的 pop 方法會對集合進行無序的排列,然後将這個無序排列集合的左面第一個元素進行删除。
3、計算集合元素個數
文法格式如下:
len(s)
計算集合 s 元素個數。
4、清空集合
文法格式如下:
s.clear()
清空集合 s。
5、判斷元素是否在集合中存在
文法格式如下:
x in s
判斷元素 x 是否在集合 s 中,存在傳回 True,不存在傳回 False。
集合内置方法完整清單
add() 為集合添加元素
clear() 移除集合中的所有元素
copy() 拷貝一個集合
difference() 傳回多個集合的差集
difference_update() 移除集合中的元素,該元素在指定的集合也存在。
discard() 删除集合中指定的元素
intersection() 傳回集合的交集
intersection_update() 傳回集合的交集。
isdisjoint() 判斷兩個集合是否包含相同的元素,如果沒有傳回 True,否則傳回 False。
issubset() 判斷指定集合是否為該方法參數集合的子集。
issuperset() 判斷該方法的參數集合是否為指定集合的子集
pop() 随機移除元素
remove() 移除指定元素
symmetric_difference() 傳回兩個集合中不重複的元素集合。
symmetric_difference_update() 移除目前集合中在另外一個指定集合相同的元素,并将另外一個指定集合中不同的元素插入到目前集合中。
union() 傳回兩個集合的并集
update() 給集合添加元素