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