零基礎學Python 再深點,更懂list

2021-06-28 01:19:12 字數 2411 閱讀 1178

對於list,由於她的確非常非常龐雜,在python中應用非常廣泛,所以,雖然已經介紹完畢了基礎內容,這裡還要用一講深入一點點,往往越深入越...

先看下面的例子,這個例子是想得到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]

看到這個結果,看官還不驚嘆嗎?這就是python,追求簡潔優雅的python!

其官方文件中有這樣一段描述,道出了list解析的真諦:

還記得前面一講中的那個問題嗎?

找出100以內的能夠被3整除的正整數。

我們用的方法是:

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]

震撼了。絕對牛x!

其實,不僅僅對數字組成的list,所有的都可以如此操作。請在平復了激動的心之後,默默地看下面的**,感悟一下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

算是乙個有意思的內建函式了,主要是提供乙個簡單快捷的方法。

官方文件是這麼說的:

return an enumerate object. sequence must be a sequence, an iterator, or some other object which supports iteration. the next() method of the iterator returned by enumerate() returns a tuple containing a count (from start which defaults to 0) and the values obtained from iterating over sequence:

順便抄錄幾個例子,供看官欣賞,最好實驗一下。

>>> 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')這樣的東西,這是另外一種資料型別,待後面詳解。

零基礎學Python

零基礎學python 1 1 python是一門指令碼語言 2 python的優勢 1 語法和結構比較簡單,易入門 2 能夠跨平台使用 3 應用範圍廣,設計到作業系統 3d動畫 web 雲計算,企業應用等多方面。3 idle 是乙個python shell,類似於windows的cmd視窗 4 pr...

零基礎學python 一

每次學習語言總是要了解其背景python也不例外。首先python的創始人為 guido van rossum 1989年聖誕節期間,在 阿姆斯特丹 guido為了打發聖誕節的無趣,決心開發乙個新的指令碼 解釋程式 做為abc 語言的一種繼承。看看人家外鬼子程式設計師 哎不得不佩服。他在業餘時間開發...

零基礎學Python筆記

alt n 最遠一條語句 alt p 最近一條語句 tab的兩個作用 1 縮排 2 補足 isinstance str1,str 判斷型別 s為字串 s.isalnum 所有字元都是數字或者字母,為真返回 ture,否則返回 false。s.isalpha 所有字元都是字母,為真返回 ture,否則...