Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

5.1 引言

在這一章中,我們通過開發新的工具來處理有序數據,繼續討論真實世界中的應用。在第二章中,我們介紹了序列接口,在 Python 內置的數據類型例如tuplelist中實現。序列支持兩個操作:獲取長度和由下標訪問元素。第三章中,我們開發了序列接口的用戶定義實現,用於表示遞歸列表的Rlist類。序列類型具有高效的表現力,並且可以讓我們高效訪問大量有序數據集。

但是,使用序列抽象表示有序數據有兩個重要限制。第一個是長度為n的序列的要佔據比例為n的內存總數。於是,序列越長,表示它所佔的內存空間就越大。

第二個限制是,序列只能表示已知且長度有限的數據集。許多我們想要表示的有序集合並沒有定義好的長度,甚至有些是無限的。兩個無限序列的數學示例是正整數和斐波那契數。無限長度的有序數據集也出現在其它計算領域,例如,所有推特狀態的序列每秒都在增長,所以並沒有固定的長度。與之類似,經過基站發送出的電話呼叫序列,由計算機用戶發出的鼠標動作序列,以及飛機上的傳感器產生的加速度測量值序列,都在世界演化過程中無限擴展。

在這一章中,我們介紹了新的構造方式用於處理有序數據,它為容納未知或無限長度的集合而設計,但僅僅使用有限的內存。我們也會討論這些工具如何用於一種叫做協程的程序結構,來創建高效、模塊化的數據處理流水線。