Python range函數(shù)之生成器函數(shù)的示例
range函數(shù)—生成器函數(shù)
1. 什么是range( )函數(shù)
range[re?nd?]:按一定的次數(shù)排列。
range的中文意思是按一定的次數(shù)排列。
range( )函數(shù):Python中的生成器函數(shù)。
range( )函數(shù)在Python中的作用是生成一個(gè)新的range對(duì)象。
【溫馨提示】
什么是生成器函數(shù)、什么是對(duì)象就是Python中的一個(gè)概念,就是一個(gè)定義,初學(xué)不用過多糾結(jié)。
初學(xué)者重點(diǎn)掌握range函數(shù)的語(yǔ)法即可。
什么是對(duì)象,后面的內(nèi)容會(huì)講。
2. 回顧列表切片的語(yǔ)法
列表[star:end:step]
列表[開始字符:結(jié)束字符:步長(zhǎng)]
列表切片取值語(yǔ)法由4部分構(gòu)成:
- 列表名。
- 英文中括號(hào)。
- 3個(gè)參數(shù)。
- 3個(gè)參數(shù)之間用英文冒號(hào)分隔。
# 新建一個(gè)str列表 str_list = ["當(dāng)歸", "人參", "黃芪", "紅棗", "枸杞", "天麻", "山楂"] # 用切片從列表中取值 print(str_list[0:4:2]) # type函數(shù)查看列表切片取值的數(shù)據(jù)類型 print("列表切片取值得到的數(shù)據(jù)類型仍然是列表:", type(str_list[0:4:2]))
【終端輸出】
['當(dāng)歸', '黃芪']
列表切片取值得到的數(shù)據(jù)類型仍然是列表: <class 'list'>
【0:4:2代碼解析】
start=0即開始元素的索引為0,索引0對(duì)應(yīng)列表的第1個(gè)元素,即元素當(dāng)歸
。
end=4即結(jié)束元素的索引為4,索引4對(duì)應(yīng)列表的第5個(gè)元素,即元素枸杞
注意切片的語(yǔ)法:含前不含后
,即含開始元素,不含結(jié)束元素枸杞
。
step=2即步長(zhǎng)為2,步長(zhǎng)為2可以理解成一次性向前走2步,那就是要跳過1個(gè)字符。
3. range( )函數(shù)的語(yǔ)法
【列表切片和range函數(shù)的區(qū)別】
列表切片用英文中括號(hào)[]
,range函數(shù)用英文圓括號(hào)()
。
列表切片的3個(gè)參數(shù)用英文冒號(hào):
分隔。
range函數(shù)的3個(gè)參數(shù)用英文逗號(hào),
分隔。
列表[star:end:step]
range(star,end,step)
【range( )函數(shù)的語(yǔ)法如下】
range(開始字符,結(jié)束字符,步長(zhǎng))
range( )函數(shù)由4部分組成:
- 函數(shù)名:
range
- 英文小括號(hào):
( )
- 3個(gè)參數(shù)
- 3個(gè)參數(shù)之間用英文逗號(hào)
,
分隔
【參數(shù)說明】
- 參數(shù)start:表示起始的整數(shù)(包含該整數(shù)),如果不指定,則默認(rèn)為
0
。 - 參數(shù)end:表示結(jié)束的整數(shù)(不包含該整數(shù)),不能省略。
- 參數(shù)step:表示步長(zhǎng),即兩個(gè)數(shù)之間的間隔。如果省略,則默認(rèn)為1,當(dāng)省略該步長(zhǎng)時(shí),最后一個(gè)英文逗號(hào)也可以省略。
【重點(diǎn)提示】
切片和range函數(shù)都包括開始字符,不包括結(jié)束字符,簡(jiǎn)單記憶為含前不含后
。
【返回值】
range函數(shù)返回的是一個(gè)range對(duì)象。
我們可以利用list函數(shù)將range對(duì)象轉(zhuǎn)換成列表。
我們可以利用tuple函數(shù)將range對(duì)象轉(zhuǎn)換成元組。
【溫馨提示】
range函數(shù)不能直接生成列表或元組,必需利用list、tuple函數(shù)將其轉(zhuǎn)換成列表或元組。
3. range函數(shù)實(shí)操
3.1 只有1個(gè)參數(shù)
# 創(chuàng)建一個(gè)range 函數(shù),將結(jié)果賦值給變量r r = range(3) # 輸出r print(r) # 用type函數(shù)查看r的數(shù)據(jù)類型 print(type(r)) # 用list函數(shù)將range對(duì)象轉(zhuǎn)換為列表 print(list(r)) # 用tuple函數(shù)將range對(duì)象轉(zhuǎn)換為元組 print(tuple(r))
【終端輸出】
range(0, 3)
<class 'range'>
[0, 1, 2]
(0, 1, 2)
【range(3)代碼解析】
這里只有1個(gè)參數(shù)3
。
只有1個(gè)參數(shù)表示從整數(shù)0開始,步長(zhǎng)為1。
start=0
end=3
step=1,即步長(zhǎng)為1
【代碼解析:返回值】
我們用type函數(shù)查看數(shù)據(jù)類型,返回的是<class 'range'>
,即是一個(gè)range對(duì)象。
我們利用list將其轉(zhuǎn)換成列表,我們可以發(fā)現(xiàn)列表中的元素就是一個(gè)數(shù)學(xué)中的等差數(shù)列。
為了方便理解,我們可以認(rèn)為range函數(shù)在list函數(shù)的作用下,創(chuàng)建的就是一個(gè)等差數(shù)列。
數(shù)列的公差就是步長(zhǎng)。
3.2 有2個(gè)參數(shù)
# 創(chuàng)建一個(gè)range 函數(shù),將結(jié)果賦值給變量r r = range(2,5) # 輸出r print(r) # 用type函數(shù)查看r的數(shù)據(jù)類型 print(type(r)) # 用list函數(shù)將range對(duì)象轉(zhuǎn)換為列表 print(list(r))
【終端輸出】
range(2, 5)
<class 'range'>
[2, 3, 4]
【range(2,5)代碼解析】
start=2,從2開始,包含2。
end=5,到5結(jié)束,不包含5。
step=1,步長(zhǎng)為1。
因此輸出結(jié)果為2,3,4。
3.3 有3個(gè)參數(shù)
# 創(chuàng)建一個(gè)range 函數(shù),將結(jié)果賦值給變量r r = range(2,11,3) # 輸出r print(r) # 用type函數(shù)查看r的數(shù)據(jù)類型 print(type(r)) # 用list函數(shù)將range對(duì)象轉(zhuǎn)換為列表 print(list(r))
【終端輸出】
range(2, 11, 3)
<class 'range'>
[2, 5, 8]
【range(2,11,3)代碼解析】
start=2,從2開始,包含2。
end=11,到11結(jié)束,不包含11。
step=3,步長(zhǎng)為3,也可以理解為公差為3的等差數(shù)列。
第1個(gè)數(shù)為2。
第2個(gè)數(shù)為2+3=5。
第3個(gè)數(shù)為5+3=8。
第4個(gè)數(shù)為8+3=11。(不包含)
因此輸出列表中有2,5,8三個(gè)數(shù)。
3.4 步長(zhǎng)為負(fù)數(shù)
# 創(chuàng)建一個(gè)range 函數(shù),將結(jié)果賦值給變量r r = range(15,0,-5) # 輸出r print(r) # 用type函數(shù)查看r的數(shù)據(jù)類型 print(type(r)) # 用list函數(shù)將range對(duì)象轉(zhuǎn)換為列表 print(list(r))
【終端輸出】
range(15, 0, -5)
<class 'range'>
[15, 10, 5]
【range(15,0,-5)代碼解析】
start=15,從15開始,包含15。
end=0,到0結(jié)束,不包含0。
step=-5,步長(zhǎng)為-5,也可以理解為公差為-5的等差數(shù)列。
第1個(gè)數(shù)為15。
第2個(gè)數(shù)為15-5=10。
第3個(gè)數(shù)為10-5=5。
第4個(gè)數(shù)為5-5=0。(不包含)
因此輸出列表中有15,10,5三個(gè)數(shù)。
4. list不能完全替代range
range函數(shù)和list函數(shù)最終都能生成一個(gè)列表,但兩個(gè)函數(shù)各有優(yōu)缺點(diǎn)。
# 創(chuàng)建一個(gè)整數(shù)列表 int_list = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] print(int_list) r=range(20) print(list(r))
【終端輸出】
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
觀察上面的代碼,我們發(fā)現(xiàn)用range函數(shù)創(chuàng)建一個(gè)有規(guī)律的整數(shù)列表更為便捷。
list函數(shù)需要寫20個(gè)元素,但range函數(shù)最多寫3個(gè)參數(shù)就可以完成。
5. 總結(jié)
到此這篇關(guān)于Python range函數(shù)—生成器函數(shù)的文章就介紹到這了,更多相關(guān)Python range函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PyQt5的PyQtGraph實(shí)踐系列3之實(shí)時(shí)數(shù)據(jù)更新繪制圖形
這篇文章主要介紹了PyQt5的PyQtGraph實(shí)踐系列3之實(shí)時(shí)數(shù)據(jù)更新繪制圖形,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05Python中zip()函數(shù)的簡(jiǎn)單用法舉例
這篇文章主要給大家介紹了關(guān)于Python中zip()函數(shù)的簡(jiǎn)單用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Python多進(jìn)程庫(kù)multiprocessing中進(jìn)程池Pool類的使用詳解
這篇文章主要介紹了Python多進(jìn)程庫(kù)multiprocessing中進(jìn)程池Pool類的使用詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11Python創(chuàng)建一個(gè)元素都為0的列表實(shí)例
今天小編就為大家分享一篇Python創(chuàng)建一個(gè)元素都為0的列表實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11PyQt5使用QTimer實(shí)現(xiàn)電子時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了PyQt5使用QTimer實(shí)現(xiàn)電子時(shí)鐘,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07