先看下面的例子,這個例子是想得到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 列表是可變的 鍊錶 增刪快,索引慢 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結...