欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

跟老齊學(xué)Python之有容乃大的list(4)

系統(tǒng) 1662 0

list的話題的確不少,而且,在編程中,用途也非常多。

有看官可能要問了,如果要生成一個(gè)list,除了要把元素一個(gè)一個(gè)寫上之外,有沒有能夠讓計(jì)算機(jī)自己按照某個(gè)規(guī)律生成list的方法呢?

如果你提出了這個(gè)問題,充分說明你是一個(gè)“懶人”,不過這不是什么壞事情,這個(gè)世界就是因?yàn)椤皯腥恕钡拇嬖诙M(jìn)步。“懶人”其實(shí)不懶。

對(duì)list的操作

range(start,stop)生成數(shù)字list

range(start, stop[, step])是一個(gè)內(nèi)置函數(shù)。

要研究清楚一些函數(shù)特別是內(nèi)置函數(shù)的功能,建議看官首先要明白內(nèi)置函數(shù)名稱的含義。因?yàn)樵趐ython中,名稱不是隨便取的,是代表一定意義的。關(guān)于取名字問題,可以看參考本系列的:永遠(yuǎn)強(qiáng)大的函數(shù)中的《取名字的學(xué)問》部分內(nèi)容。

range
n. 范圍;幅度;排;山脈
vi. (在...內(nèi))變動(dòng);平行,列為一行;延伸;漫游;射程達(dá)到
vt. 漫游;放牧;使并列;歸類于;來回走動(dòng)
在具體實(shí)驗(yàn)之前,還是按照管理,摘抄一段官方文檔的原話,讓我們能夠深刻理解之:

復(fù)制代碼 代碼如下:

This is a versatile function to create lists containing arithmetic progressions. It is most often used in for loops. The arguments must be plain integers. If the step argument is omitted, it defaults to 1. If the start argument is omitted, it defaults to 0. The full form returns a list of plain integers [start, start + step, start + 2 * step, ...]. If step is positive, the last element is the largest start + i * step less than stop; if step is negative, the last element is the smallest start + i * step greater than stop. step must not be zero (or else ValueError is raised).

從這段話,我們可以得出關(guān)于range()函數(shù)的以下幾點(diǎn):

這個(gè)函數(shù)可以創(chuàng)建一個(gè)數(shù)字元素組成的列表。
這個(gè)函數(shù)最常用于for循環(huán)(關(guān)于for循環(huán),馬上就要涉及到了)
函數(shù)的參數(shù)必須是整數(shù),默認(rèn)從0開始。返回值是類似[start, start + step, start + 2*step, ...]的列表。
step默認(rèn)值是1。如果不寫,就是按照此值。
如果step是正數(shù),返回list的最最后的值不包含stop值,即start+istep這個(gè)值小于stop;如果step是負(fù)數(shù),start+istep的值大于stop。
step不能等于零,如果等于零,就報(bào)錯(cuò)。
在實(shí)驗(yàn)開始之前,再解釋range(start,stop[,step])的含義:

start:開始數(shù)值,默認(rèn)為0,也就是如果不寫這項(xiàng),就是認(rèn)為start=0
stop:結(jié)束的數(shù)值,必須要寫的。
step:變化的步長(zhǎng),默認(rèn)是1,也就是不寫,就是認(rèn)為步長(zhǎng)為1。堅(jiān)決不能為0
實(shí)驗(yàn)開始,請(qǐng)以各項(xiàng)對(duì)照前面的講述:

復(fù)制代碼 代碼如下:

>>> range(9)??????????????? #stop=9,別的都沒有寫,含義就是range(0,9,1)
[0, 1, 2, 3, 4, 5, 6, 7, 8] #從0開始,步長(zhǎng)為1,增加,直到小于9的那個(gè)數(shù)
>>> range(0,9)
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> range(0,9,1)
[0, 1, 2, 3, 4, 5, 6, 7, 8]

>>> range(1,9)????????????? #start=1
[1, 2, 3, 4, 5, 6, 7, 8]

>>> range(0,9,2)??????????? #step=2,每個(gè)元素等于start+i*step,
[0, 2, 4, 6, 8]

僅僅解釋一下range(0,9,2)

如果是從0開始,步長(zhǎng)為1,可以寫成range(9)的樣子,但是,如果步長(zhǎng)為2,寫成range(9,2)的樣子,計(jì)算機(jī)就有點(diǎn)糊涂了,它會(huì)認(rèn)為start=9,stop=2。所以,在步長(zhǎng)不為1的時(shí)候,切忌,要把start的值也寫上。
start=0,step=2,stop=9.list中的第一個(gè)值是start=0,第二個(gè)值是start+1step=2(注意,這里是1,不是2,不要忘記,前面已經(jīng)講過,不論是list還是str,對(duì)元素進(jìn)行編號(hào)的時(shí)候,都是從0開始的),第n個(gè)值就是start+(n-1)step。直到小于stop前的那個(gè)值。
熟悉了上面的計(jì)算過程,看看下面的輸入誰是什么結(jié)果?

>>> range(-9)
我本來期望給我返回[0,-1,-2,-3,-4,-5,-6,-7,-8],我的期望能實(shí)現(xiàn)嗎?

分析一下,這里start=0,step=1,stop=-9.

第一個(gè)值是0;第二個(gè)是start+1*step,將上面的數(shù)代入,應(yīng)該是1,但是最后一個(gè)還是-9,顯然出現(xiàn)問題了。但是,python在這里不報(bào)錯(cuò),它返回的結(jié)果是:

復(fù)制代碼 代碼如下:

>>> range(-9)
[]
>>> range(0,-9)
[]
>>> range(0)
[]

報(bào)錯(cuò)和返回結(jié)果,是兩個(gè)含義,雖然返回的不是我們要的。應(yīng)該如何修改呢?

復(fù)制代碼 代碼如下:

>>> range(0,-9,-1)
[0, -1, -2, -3, -4, -5, -6, -7, -8]
>>> range(0,-9,-2)
[0, -2, -4, -6, -8]

有了這個(gè)內(nèi)置函數(shù),很多事情就簡(jiǎn)單了。比如:

復(fù)制代碼 代碼如下:

>>> range(0,100,2)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]

100以內(nèi)的自然數(shù)中的偶數(shù)組成的list,就非常簡(jiǎn)單地搞定了。

思考一個(gè)問題,現(xiàn)在有一個(gè)列表,比如是["I","am","a","pythoner","I","am","learning","it","with","qiwsir"],要得到這個(gè)list的所有序號(hào)組成的list,但是不能一個(gè)一個(gè)用手指頭來數(shù)。怎么辦?

請(qǐng)沉思兩分鐘之后,自己實(shí)驗(yàn)一下,然后看下面。

復(fù)制代碼 代碼如下:

>>> pythoner
['I', 'am', 'a', 'pythoner', 'I', 'am', 'learning', 'it', 'with', 'qiwsir']
>>> py_index = range(len(pythoner))???? #以len(pythoner)為stop的值
>>> py_index
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

再用手指頭指著pythoner里面的元素,數(shù)一數(shù),是不是跟結(jié)果一樣。

排排坐,分果果

排序,不管在現(xiàn)實(shí)還是在網(wǎng)絡(luò)上都是隨處可見的。梁山好漢要從第一個(gè)排序到第108個(gè),這是一個(gè)不很容易搞定的活。

前面提到的內(nèi)置函數(shù)range()得到的結(jié)果,就是一個(gè)排好序的。對(duì)于一個(gè)沒有排好序的list,怎么排序呢?

有兩個(gè)方法可以實(shí)現(xiàn)對(duì)list的排序:

list.sort(cmp=None, key=None, reverse=False)
sorted(iterable[, cmp[, key[, reverse]]])
通過下面的實(shí)驗(yàn),可以理解如何排序的方法

復(fù)制代碼 代碼如下:

>>> number = [1,4,6,2,9,7,3]
>>> number.sort()
>>> number
[1, 2, 3, 4, 6, 7, 9]

>>> number = [1,4,6,2,9,7,3]
>>> number
[1, 4, 6, 2, 9, 7, 3]
>>> sorted(number)
[1, 2, 3, 4, 6, 7, 9]

>>> number = [1,4,6,2,9,7,3]
>>> number
[1, 4, 6, 2, 9, 7, 3]
>>> number.sort(reverse=True)?? #開始實(shí)現(xiàn)倒序
>>> number
[9, 7, 6, 4, 3, 2, 1]

>>> number = [1,4,6,2,9,7,3]
>>> number
[1, 4, 6, 2, 9, 7, 3]
>>> sorted(number,reverse=True)
[9, 7, 6, 4, 3, 2, 1]

其實(shí),在高級(jí)語言中,排序是一個(gè)比較熱門對(duì)的話題,如果有興趣的讀者,可以到我寫的有關(guān)算法中查看有關(guān)排序的話題。

至此,有關(guān)list的基本操作的內(nèi)置函數(shù),就差不多了。不過最后,還要告訴看官們一個(gè)學(xué)習(xí)方法。因?yàn)閜ython的內(nèi)置函數(shù)往往不少,有時(shí)候光憑教程,很難學(xué)到全部,那么,最關(guān)鍵地是要自己會(huì)查找都有哪些函數(shù)可以用。怎么查找呢?

一個(gè)非常重要的方法

假設(shè)有一個(gè)list,如何知道它所擁有的內(nèi)置函數(shù)呢?請(qǐng)用help(),幫助我吧。

>>> help(list)
就能夠看到所有的關(guān)于list的函數(shù),以及該函數(shù)的使用方法。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚州va| 欧美一级黄色免费看 | 日本午夜网站 | 97热久久 | 亚洲精品一区二区三区在线看 | 久久久久综合 | 男女一进一出视频 | 欧美一级爆毛片 | 国产精品香蕉 | 久草这里只有精品 | 精品亚洲一区二区三区四区五区 | 99国产精品久久久久久久成人热 | 日韩电影毛片 | 久久久91| 国产噜噜噜精品免费 | 中文字幕精品一区二区三区精品 | 黄色国产视频 | 91精品亚洲 | 色香婷婷 | 亚洲日韩中文字幕一区 | 色爱影院 | 毛片在线播放网址 | 制服丝袜成人动漫 | 又爽又黄axxx片免费观看 | 51国产午夜精品免费视频 | 男女做www免费高清视频 | 成人午夜免费视频 | 国产福利资源在线 | 欧美日韩亚洲一区二区三区在线观看 | 99久久精品国产免看国产一区 | 亚洲一区二区三区四区 | 奇米影视7777久久精品人人爽 | 极色影院| 免费特黄一级欧美大片在线看 | 国产在线视频2019最新视频 | 亚洲欧洲中文日韩久久AV乱码 | 毛片性生活 | 26uuu中文字幕| 精品久久久久久亚洲综合网 | 奇米视频在线 | 欧美a级成人淫片免费看 |