




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
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列表操作 對字符串的操作也可應(yīng)用于列表: 合并: + 重復(fù): * 索引: 分段: : 長度: len() 迭代: for in : . 列表刪除: del :列表操作(續(xù)) 應(yīng)用于列表的專門方法: 追加:.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é)合可以表示任意復(fù)雜的數(shù)據(jù)集合體.Lu Chaoju
5、n, SJTU 9編程實例:對DieView的改進 將骰子的7個點構(gòu)成一個列表.(原為7個獨立變量) 好處:對整個列表進行操作時,代碼變得簡單,因為可以應(yīng)用循環(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)的算法的集合 因此:整個應(yīng)用程序本身可看作對象! 編程實例:計算器. 每個計算器是一個對象.元組 元組:用圓括號包圍的一組值. 類似列表但內(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)了索引查找:按給定位置檢索. 很多應(yīng)用需要“鍵-值”查找:按給定的鍵,檢索相關(guān)聯(lián)的值. Python提供字典類型,用來存儲“鍵-值對”. 創(chuàng)建: dict = k1:v1, k2:v2, . ,
9、 kn:vn 檢索: dict返回相關(guān)聯(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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年度不動產(chǎn)投資信托合同協(xié)議
- 2025年度夫妻財產(chǎn)約定與家庭財務(wù)規(guī)劃協(xié)議書模板
- 2025年度公廁保潔與智能設(shè)備維護服務(wù)合同
- 2025年度房屋遺產(chǎn)繼承與遺產(chǎn)分配及稅務(wù)籌劃協(xié)議
- 2025年度單價合同在新能源技術(shù)研發(fā)中的合同履行與經(jīng)濟效益
- 2025年度定向委培協(xié)議書:新材料研發(fā)人才定向培養(yǎng)協(xié)議
- 2025年度農(nóng)村自來水用戶用水糾紛處理合同
- 2025年度建筑材料經(jīng)銷商返點獎勵協(xié)議
- 2025年度勞動合同協(xié)商解除協(xié)議書-企業(yè)轉(zhuǎn)制員工安置協(xié)議
- 4S店裝飾維修服務(wù)合同
- 仁愛版九年級英語下冊課文翻譯
- 鋼網(wǎng)驗收報告
- 防水補漏工程合同(合同版本)
- 鐵路局中間站管理手冊
- 監(jiān)理日志表(標準模版)
- H3C-CAS虛擬化平臺詳細介紹
- 小學生韻母in、ing常見漢字與區(qū)分練習
- 藥房品種類別及數(shù)量清單
- 大學生安全教育課件(ppt共41張)
- 初中物理人教版八年級下冊 第1節(jié)牛頓第一定律 課件
- 連續(xù)平壓熱壓機 三篇 俞敏等
評論
0/150
提交評論