版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、數(shù)據(jù)集合體Lu Chaojun, SJTU 2Lu Chaojun, SJTU 2 2數(shù)據(jù)集合體 很多程序都需要處理大量類似數(shù)據(jù)的集合. 文檔中的大量單詞, 學校學生,企業(yè)客戶, 實驗得到的數(shù)據(jù), . 回顧:輸入一批數(shù)據(jù)求平均值的程序. 無需保存數(shù)據(jù):用累積變量sum和count即可. 但:求中位數(shù)和標準差需要保存全部數(shù)據(jù).用很多獨立變量保存?Lu Chaojun, SJTU 3Lu Chaojun, SJTU 3 3列表 有沒有一個對象能包含很多數(shù)據(jù)?Yes! 如range(10) = 0,1,2,3,4,5,6,7,8,9 又如string.split(“This is it.”) = T
2、his,is,it 列表(List):是一種數(shù)據(jù)集合體. 是數(shù)據(jù)的有序序列 整體用一個名字表示:如seq 各成員通過下標(索引)引用:如seq3Lu Chaojun, SJTU 4Lu Chaojun, SJTU 4 4列表與字符串 回顧:Python字符串是序列,可通過索引引用. 列表與字符串的區(qū)別: 列表的成員可以是任何數(shù)據(jù)類型,而字符串中只能是字符; 列表的成員可修改,而字符串不能修改.列表與數(shù)組 很多編程語言提供數(shù)組(array)類型. Python列表與數(shù)組的區(qū)別: 列表是動態(tài)的,而數(shù)組是定長的 列表元素可以是混合類型的,而數(shù)組元素是同類型的Lu Chaojun, SJTU 5Lu
3、Chaojun, SJTU 6Lu Chaojun, SJTU 6 6列表操作 對字符串的操作也可應用于列表: 合并: + 重復: * 索引: 分段: : 長度: len() 迭代: for in : . 列表刪除: del :列表操作(續(xù)) 應用于列表的專門方法: 追加:.append(x) 排序: .sort() 逆轉(zhuǎn): .reverse() 查找:.index(x) 插入:.insert(i,x) 計數(shù):.count(x) 刪除:.remove(x) 彈出:.pop(i) 隸屬:x in Lu Chaojun, SJTU 7編程實例:stats.py# stats.pyfrom math
4、 import sqrtdef getNumbers():def mean(nums):def stdDev(nums, xbar):def median(nums):def main(): data = getNumbers() xbar = mean(data) std = stdDev(data, xbar) med = median(data) print .if _name_ = _main_: main()Lu Chaojun, SJTU 8列表與類結(jié)合使用 類將一些數(shù)據(jù)與操作封裝成一個對象 列表將一些同類對象組合成整體 這兩者的結(jié)合可以表示任意復雜的數(shù)據(jù)集合體.Lu Chaoju
5、n, SJTU 9編程實例:對DieView的改進 將骰子的7個點構(gòu)成一個列表.(原為7個獨立變量) 好處:對整個列表進行操作時,代碼變得簡單,因為可以應用循環(huán)語句.如:for pip in self.pips: pip.setFill(self.background)for i in 0,3,6: self.pipsi.setFill(self.foreground) 根據(jù)擲出的value決定點亮骰子哪些點:可以使用表驅(qū)動的寫法(見下頁)Lu Chaojun, SJTU 10編程實例:對DieView的改進(續(xù))for pip in self.pips:if value = 1: on =
6、3elif value = 2: on = 0,6elif value = 3: on = 0,3,6elif value = 4: on = 0,2,4,6 elif value = 5: on = 0,2,3,4,6else: on = 0,1,2,4,5,6for i in on: self.pipsi.setFill(self.foreground)onTable = , 3, 2,4, 2,3,4, 0,2,4,6, 0,2,3,4,6, 0,1,2,4,5,6 for pip in self.pips:on = onTablevaluefor i in on: self.pipsi
7、.setFill(self.foreground)這個onTable是不變的,可以作為類的實例變量,由_init_初始化.Lu Chaojun, SJTU 11Lu Chaojun, SJTU 12Lu Chaojun, SJTU 1212編程實例:計算器 程序 = 數(shù)據(jù)結(jié)構(gòu)的集合 + 處理數(shù)據(jù)結(jié)構(gòu)的算法的集合 因此:整個應用程序本身可看作對象! 編程實例:計算器. 每個計算器是一個對象.元組 元組:用圓括號包圍的一組值. 類似列表但內(nèi)容不可修改. 例如:創(chuàng)建計算器按鈕的代碼:bSpecs = (2,1,0), (3,1,.), (1,2,1), (2,2,2), (3,2,3), (4,2,
8、+), (5,2,-), (1,3,4), (2,3,5), (3,3,6), (4,3,*), (5,3,/), (1,4,7), (2,4,8), (3,4,9), (4,4,-),(5,4,C)self.buttons = for (cx,cy,label) in bSpecs:# create the larger = buttonLu Chaojun, SJTU 13字典:無序集合體 列表實現(xiàn)了索引查找:按給定位置檢索. 很多應用需要“鍵-值”查找:按給定的鍵,檢索相關聯(lián)的值. Python提供字典類型,用來存儲“鍵-值對”. 創(chuàng)建: dict = k1:v1, k2:v2, . ,
9、 kn:vn 檢索: dict返回相關聯(lián)的 值可修改:dict = 鍵類型常用字符串,整數(shù);值類型則任意. 存儲:按內(nèi)部最有效的方式,不保持創(chuàng)建順序.Lu Chaojun, SJTU 14字典例 縮略語字典abbr = etc:cetera, cf:confer, ibid:ibidem查找:abbretc返回cetera修改:abbretc = et cetera. 月份映射表month = 1:Jan, 2:Feb, 3:March,4:April顯示: print month1增加鍵值對:month4 = AprilLu Chaojun, SJTU 15字典操作 鍵存在性:has_key() 鍵列表:.keys() 值列表:.values() 鍵值對列表:.items() 刪除鍵值對:del 清空字典:.clear()Lu Chaojun, SJTU 16編程實例:詞頻統(tǒng)計 統(tǒng)計文檔中單詞的出現(xiàn)次數(shù). 用字典結(jié)構(gòu): counts: 用很多累積變量顯然不好! 單詞首次出現(xiàn)時字典里查不到會出錯:try: countsw = countsw + 1except KeyError: countsw = 1Lu Chaojun, SJTU 17編程實例:詞頻統(tǒng)計(續(xù)) 對大文檔,為每個單詞輸出頻度沒有意義. 如何輸出前n個最頻繁的單詞? 對:列表按頻度排序.sort()不行比較
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度中醫(yī)婦科師承教育合作合同4篇
- 2025年度智能化生產(chǎn)線設備采購合同補充協(xié)議3篇
- 2024進出口業(yè)務銷售合同范本
- 2025不銹鋼水箱售后服務與維護保養(yǎng)合同范本3篇
- 2024版潛孔鉆租賃業(yè)務協(xié)議要約一
- 家用電烤盤建設項目申請報告可行性研究報告
- 2025年度智能駕駛技術研發(fā)中心高級工程師個人聘用合同3篇
- 2025年度個人抵押貸款合同終止及債權(quán)債務處理合同范本4篇
- 2025年度個人消費信貸融資委托服務協(xié)議3篇
- 2025年寧夏公路橋梁建設有限公司招聘筆試參考題庫含答案解析
- GB/T 12914-2008紙和紙板抗張強度的測定
- GB/T 1185-2006光學零件表面疵病
- ps6000自動化系統(tǒng)用戶操作及問題處理培訓
- 家庭教養(yǎng)方式問卷(含評分標準)
- 城市軌道交通安全管理課件(完整版)
- 線纜包覆擠塑模設計和原理
- TSG ZF001-2006 安全閥安全技術監(jiān)察規(guī)程
- 部編版二年級語文下冊《蜘蛛開店》
- 鍋爐升降平臺管理
- 200m3╱h凈化水處理站設計方案
- 個體化健康教育記錄表格模板1
評論
0/150
提交評論