python 資料結構 list 3

2021-08-29 16:12:04 字數 2641 閱讀 4528

先看下面的例子,這個例子是想得到1到9的每個整數的平方,並且將結果放在list中列印出來

>>> power2 = 

>>> for i in range(1,10):

...>>> power2

[1, 4, 9, 16, 25, 36, 49, 64, 81]

python有乙個非常有意思的功能,就是list解析,就是這樣的:

>>> squares = [x**2 for x in range(1,10)]

>>> squares

[1, 4, 9, 16, 25, 36, 49, 64, 81]

我們用的方法是:

aliquot = 

for n in range(1,100):

if n%3 == 0:

print aliquot

用list解析重寫,會是這樣的:

>>> aliquot = [n for n in range(1,100) if n%3==0]

>>> aliquot

[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

另乙個:

>>> print range(3,100,3)

[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

其實,不僅僅對數字組成的list,所有的都可以如此操作。

>>> [one.strip() for one in mybag] #去掉元素前後的空格

這是乙個有意思的內建函式,本來我們可以通過for i in range(len(list))的方式得到乙個list的每個元素編號,然後在用list[i]的方式得到該元素。如果要同時得到元素編號和元素怎麼辦?就是這樣了:

>>> for i in range(len(week)):

... print week[i]+' is '+str(i) #注意,i是int型別,如果和前面的用+連線,必須是str型別

...monday is 0

sunday is 1

friday is 2

python中提供了乙個內建函式enumerate,能夠實現類似的功能

>>> for (i,day) in enumerate(week):

... print day+' is '+str(i)

...monday is 0

sunday is 1

friday is 2

實驗:

>>> seasons = ['spring', 'summer', 'fall', 'winter']

>>> list(enumerate(seasons))

[(0, 'spring'), (1, 'summer'), (2, 'fall'), (3, 'winter')]

>>> list(enumerate(seasons, start=1))

[(1, 'spring'), (2, 'summer'), (3, 'fall'), (4, 'winter')]

在這裡有類似(0,『spring』)這樣的東西,這是另外一種資料型別,待後面詳解。

下面將enumerate函式和list解析聯合起來,同時顯示,在進行list解析的時候,也可以包含進函式

>>> def treatment(pos, element):

... return "%d: %s"%(pos,element)

...>>> seq = ["hiekay","hiekay.github.io","python"]

>>> [ treatment(i, ele) for i,ele in enumerate(seq) ]

['0: hiekay', '1: hiekay.github.io', '2: python']

例如:

g = lambda x:x+1
ambda作為乙個表示式,定義了乙個匿名函式,上例的**x為入口引數,x+1為函式體,用函式來表示為:

def g(x):

return x+1

>>> seq = ["hiekay","hiekay.github.io","python"]

>>> foo = lambda i,ele:"%d:%s"%(i,ele) #lambda函式,給**帶來了簡介

>>> [foo(i,ele) for i,ele in enumerate(seq)]

['0:hiekay', '1:hiekay.github.io', '2:python']

關於list (3) 約瑟夫

關於list 3 約瑟夫 josephu 問題為 設編號為1,2,n的n個人圍坐一圈,約定編號為k 1 k n 的人從1開始報數,數到m 的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生乙個出隊編號的序列。鍊錶實現 include include ...

Python資料結構 list

list 和c語言中的陣列比較相似 可以通過下標進行訪問與修改 建立乙個list變數 len shoplist 求出list中的元素個數 shoplist 0 訪問第乙個元素 shoplist 0 carrot 修改第乙個元素在list中存放的資料型別可以為一種或幾種資料型別,list中也可以巢狀l...

Python資料結構(list)

列表list 索引快,增刪慢 乙個由若干有序元素組成的線性的可變的資料結構叫列表 1 列表使用中括號 表示 2 列表內元素是有順序的,可以索引 3 列表是線性的資料結構 4 列表是可變的 鍊錶 增刪快,索引慢 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結...