Python資料結構基礎內容

來源:互聯網
上載者:User

標籤:技術分享   修改   pytho   排列   dex   預設   類型   排序   pen   

1.列表:

>>> a=[123,333,333,1,145.5]>>> print(a.count(333),a.count(1),a.count(‘x‘))      #list.count(x)返回 x 在列表中出現的次數(2, 1, 0)>>> a.insert(2,-1)    #list.insert(i,x) 在指定位置 i 插入一個元素x>>> a.append(333)     #list.append(x) 把x添加到列表的結尾>>> a[123, 333, -1, 333, 1, 145.5, 333]>>> a.index(333)     #list.index(x) 返回列表中第一個值為 x 的元素的索引。如果沒有匹配的元素就會返回一個錯誤1>>> a.remove(333)    #list.remove(x)刪除列表中值為 x 的第一個元素。如果沒有這樣的元素,就會返回一個錯誤>>> a[123, -1, 333, 1, 145.5, 333]>>> a.reverse()     #list.reverse()倒排列表list的元素>>> a[333, 145.5, 1, 333, -1, 123]>>> a.sort()    #list.sort()對列表元素排序(具體怎樣排序的不清楚,數字為從小到大)>>> a[-1, 1, 123, 145.5, 333, 333]#類似 insert, remove 或 sort 等修改列表的方法沒有傳回值
View Code

2.將列表當做堆棧使用:

堆棧:先進後出

列表方法使得列表可以作為一個堆棧來使用,用 append() 方法可以把一個元素添加到堆棧頂。用不指定索引的 pop() 方法可以把一個元素從堆棧頂釋放出來

>>> stack=[3,4,5]>>> stack.append(6)>>> stack.append(7)>>> stack[3, 4, 5, 6, 7]>>> stack.pop()      #不指定位置預設刪除最後一個7>>> stack.pop()6>>> stack[3, 4, 5]
View Code

3.將列表當做隊列使用

隊列:先進先出

首先瞭解Python常用內建模組:collections

  1.namedtuple函數:用它建立一個自訂的元組tuple對象,它具備元組tuple的不變性,又可以根據屬性來引用,使用十分方便,注意d別寫掉了哈哈  

>>> from collections import namedtuple>>> Point=namedtuple(‘Point‘,[‘x‘,‘y‘])  #表示一個點的二維座標>>> p=Point(1,2)>>> p.x1>>> p.y2

#類似的,用座標和半徑表示一個圓,也可以用namedtuple定義
Circle=namedtuple(‘Circle‘,[‘x‘,‘y‘,‘r‘])

#總結文法:namedtuple(‘名稱‘,[屬性])

  2.deque(雙端隊列)

       目的:為了高效實現插入和刪除操作的雙向列表,適合用於隊列和棧

  原因:使用列表格儲存體資料時,按索引訪問元素很快,但是插入和刪除元素就很慢了,因為列表是線性儲存,資料量大的時候,插入和刪除效率很低。

  deque除了實現list的append()pop()外,還支援appendleft()popleft(),這樣就可以非常高效地往頭部添加或刪除元素

>>> from collections import deque>>> q=deque([‘a‘,‘b‘,‘c‘])>>> q.append(‘x‘)>>> q.appendleft(‘y‘)>>> qdeque([‘y‘, ‘a‘, ‘b‘, ‘c‘, ‘x‘])>>> q.pop()‘x‘>>> q.popleft()‘y‘>>> qdeque([‘a‘, ‘b‘, ‘c‘])#總結文法:定義隊列q=deque(列表)
#deque支援頭部添加appendleft()和頭部刪除popleft(),遇到把列表當做隊列就這樣做才高效

列表推導式:

>>> vec=[2,4,6]>>> [3*x for x in vec][6, 12, 18]>>> [[x,x**2] for x in vec][[2, 4], [4, 16], [6, 36]]>>> [3*x for x in vec if x>3][12, 18]>>> [3*x for x in vec if x<2][]>>> vec1=[2,4,6]>>> vec2=[4,3,-9]>>> [x*y for x in vec1 for y in vec2][8, 6, -18, 16, 12, -36, 24, 18, -54]>>> [vec1[i]*vec2[i] for i in range(len(vec1))][8, 12, -54]>>> [str(round(355/113,i)) for i in range(1,6)]    #round(x,i)返回浮點數x的四捨五入值,保留小數位元是i[‘3.0‘, ‘3.0‘, ‘3.0‘, ‘3.0‘, ‘3.0‘]>>> [x.strip() for x in vec]Traceback (most recent call last):  File "<stdin>", line 1, in <module>AttributeError: ‘int‘ object has no attribute ‘strip‘   #錯誤的是類型>>> vec3=[‘john‘,‘jack‘,‘tom‘]>>> [x.strip() for x in vec3][‘john‘, ‘jack‘, ‘tom‘]
View Code

 

Python資料結構基礎內容

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.