python 数据库表结构转为类_顺序表数据结构在python中的应用
數據結構不僅僅指的數據值在邏輯上的結構,更有在存儲空間上的位置結構,順序表,故名思意是有一定順序的數據結構。順序表最基本模型如圖:
對于基本布局順序表而言,它存儲相同單元大小并且在內存地址上連續(xù)的數據,邏輯地址是其元素的邏輯順序,物理地址第一個元素的內存地址加上離第一個元素的距離,如:e1物理地址是l0,那么e2的物理地址是e1的地址加上e1所占用的大小c,以此類推,en的物理地址是l0+(n-1)*c。
這種基本布局出現了一個問題,如果其中的元素大小不統一,那么豈不是要用最大存儲單元作為基本單位,非常浪費空間,因此出現了外置順序表,它是將元素的索引以相同單元大小連續(xù)存放,索引記錄對應數據在內存上的地址,那么我們可以通過基本布局的方式去找到索引,再根據索引找到數據。
在熟悉了順序表的基本模型后,我們再看順表的結構,如圖所示:
實際的順序表包含兩部分,一部分是順序表的記錄信息塊(含順序表容量、元素個數),一部分是數據塊,這兩部放在一起是一體式結構,如果分離通過索引連接是分離式結構。
順序表含有容量和容量的使用情況信息,那么很容易就實現擴容,其擴容方式有兩種:一種是頻繁的固定擴容,即每次增加固定單位的容量,因此會平凡擴容;另一種是倍增的擴容,即按照2、4、8、16這種方式來擴,這樣擴容頻率低,但可能造成浪費。
在python中l(wèi)ist和tuple都是順序表結構,list是動態(tài)順序表,支持內部結構變化如增加或者減少元素,而tupele并不支持結構的改變,其他性能和list一致。
既然我們知道了python中使用最頻繁的list內在結構,那我們就應該明白append是在順序表末尾增加一個元素,他的時間復雜度是O(1),而insert插入函數是將插入位置之后的元素依次向下挪動一個位置,復雜度是O(n);同理刪除一個元素,當刪除最后一個位置的元素pop()只是刪除循序表的最后一個位置元素,如果是刪除指定元素,那么該元素其后的元素依次挪動一個位置其時間復雜度為O(n);
這便是數據結構的意義,它對python性能的提升有指導性的作用。
總結
以上是生活随笔為你收集整理的python 数据库表结构转为类_顺序表数据结构在python中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018年朝鲜中国遇难者咋补偿了
- 下一篇: 中国第三艘国产航母的设计已经完成