# 內建資料結構-元組(Tuple)、列表(List)、字典(Dictionary)——2009-12-3
1.元組的正序、倒序、切片的三種索引使用方法:
>>> tuple = ('a','b','c','d','e') #定義一個元組tuple
>>> tuple[2] #索引2的元素(從0開始,從頭開始--正序索引)
'c'
>>> tuple[-2] #索引-2的元素(元組中倒數第2的元素,從尾開始--倒序索引)
'd'
>>> tuple[1:3] #切取索引1到索引3中間的元素(切片索引--不包括後者在內)
('b','c') #記住不包括指定索引區間中最後一個索引的元素
>>> tuple[-3,-1] #使用倒序方式指定切取區間,'-'就是從尾數起的意思,不同於從頭開始從0,而是1開始
('c','d') #一樣是包括指定索引區間中最後一個索引的元素,也就是索引'-1'中的元素
2.元組的另一種有趣的說法--可以"打包"然後"解包":
>>> tuple = (11,22,33,44,55) #定義元組tuple,我們還可以稱作我們把11,22,33,44,55這幾個常量"打包"起來
>>> a, b, c, d = tuple #新概念"解包",其中a,b,c,d每個都領到了叔叔tuple給他們"封"的紅包
>>> print a, b, c, d #哈哈.看看他們各自分得到的紅包裡的RMB數目對不?....
11 22 33 44 55 #跟叔叔tuple打包時的數目一樣.呵呵
3.map()可以返回二元元組的子元組
4.列表的一些常用方法:
①:append(object)--在列表的末尾添加一個對象object
②:insert(index,object)--在索引index處插入一個對象object
③:remove(value)--刪除列表中元素為value的值,如果列表中有同名元素,則刪除先出現的
④:pop([index])--刪除索引為index的元素,如果不值得index,Python則刪除列表中最後一個元素
⑤:extend(iterable)--將iterable的元素合并到列表的尾部(還可以用'+='實現)
⑥:index(value,[start,[stop]])--返回列表中元素value的索引,如果列表中有同名元素,則返回先出現的
⑦:sort(cmp=None,Key=None,reverse=False)--列表的排序
⑧:reverse()--列表的反轉(反轉式排序)
⑨:string in(list)函數可以判斷字串string是否在列表list中
⑩:還可以使用'*'、'+'、'+='進行操作
5.列表中堆棧與隊列的概念:
①:堆棧--先進後出,當使用append()方法在列表尾插入一個對象時,此時指標在列表的尾部,也就是堆棧的頂部,而使用pop()方法更是可以把堆棧頂部的元素彈出來
②:隊列--先進先出,當使用append()方法在列表尾插入一個對象時,此時指標在列表的尾部,也就是列表的底部,而使用pop(0)-注意多了個索引0,就可以把隊列中的第一個元素彈出來
6.字典的靈活運用之一,在print()中使用:
>>> print '%s, %(a)s, %(b)s' %{'a':'apple', 'b':'banana'} #其中的%s顯示整個字典,而另外兩個%s則指定了字典的鍵,顯示對應的值
{'a':'apple','b':'banana'}, apple, banana
7.字典中的一些雜七雜八:
①:字典的修改--dict[key] = value 如果key未存在則自動添加,如果存在則修改
②:字典的刪除--del dict[key] 刪除字典中鍵為key的元素,clear()方法則清空整個字典,也可以用pop(key[,d])彈出鍵為key的元素,如果字典中沒有key這個索引值,返回d的內容(可以用做返回提醒資訊)
③:字典的遍曆--常用for迴圈就可以搞掂,還可以用items()方法實現:
>>> dict = {'a':'aaa','b':'bbb','c':'ccc}
>>> dict.items()
[('a','aaa'),('b','bbb',('c','ccc')] #items()把字典中的一對鍵-值作為一個元組返回,然後把字典中所有索引值組成的元組再以列表返回
8.字典中的遍曆器對象(對象要執行個體化後才能使用):
①:iteritems()返回key-value形式的遍曆器對象
②:iterkeys()返回key形式的遍曆器對象
③:itervalues()返回value形式的遍曆器對象
需要此類遍曆器對象的時候可以按需求選擇以提高程式執行效率剩下更多系統資源!
9.字典中的一些方法:
①:keys()--以清單類型返回字典的鍵
②:values()--以清單類型返回字典的值
③:get(k[,d])--取得字典中k的索引值,如果k不存在則返回d
④:update()--合并兩個字典(類似於列表中的extend()方法喲~)
⑥:items()--返回由(key,value)元組組成的列表
⑦:setdefault(k[,d])--類似get()方法,不同於get()的是如果k不存在,會使用d作為值建立一個元素並以get()方法的形式返回d,d預設為None
⑧:copy()--複製一個字典中的所有資料--淺拷貝,會跟著引用(這裡看以理解成為複製源)的變化而變化,但是deepcopy()-深拷貝(需匯入copy模組)則連應資料引用也一起複製)則不會受引用的變化而變化,因為深拷貝是把所有資料和資料的引用也一起拷貝的
copy.copy(dict)--引用copy的copy方法進行拷貝,但似乎dict.copy()也有用...或許這就是python萬物皆對象的神奇,也許都共用這copy方法(純屬個人YY說法) 後記:經反覆實驗.發現這裡有點不對呀~
10.關於字典的排序處理函數sorted(需要排序的序列,key = 按什麼排序)
11.Python中的全域字典--sys.moudules模組:用於對匯入的模組資訊進行緩衝.
sys.modules.keys()--返回當前環境下載入的模組名稱
sys.modules.values()--返回當前下載入的模組的引用資訊