網站首頁 編程語言 正文
range函數—生成器函數
1. 什么是range( )函數
range[re?nd?]:按一定的次數排列。
range的中文意思是按一定的次數排列。
range( )函數:Python中的生成器函數。
range( )函數在Python中的作用是生成一個新的range對象。
【溫馨提示】
什么是生成器函數、什么是對象就是Python中的一個概念,就是一個定義,初學不用過多糾結。
初學者重點掌握range函數的語法即可。
什么是對象,后面的內容會講。
2. 回顧列表切片的語法
列表[star:end:step]
列表[開始字符:結束字符:步長]
列表切片取值語法由4部分構成:
- 列表名。
- 英文中括號。
- 3個參數。
- 3個參數之間用英文冒號分隔。
# 新建一個str列表 str_list = ["當歸", "人參", "黃芪", "紅棗", "枸杞", "天麻", "山楂"] # 用切片從列表中取值 print(str_list[0:4:2]) # type函數查看列表切片取值的數據類型 print("列表切片取值得到的數據類型仍然是列表:", type(str_list[0:4:2]))
【終端輸出】
['當歸', '黃芪']
列表切片取值得到的數據類型仍然是列表: <class 'list'>
【0:4:2代碼解析】
start=0即開始元素的索引為0,索引0對應列表的第1個元素,即元素當歸
。
end=4即結束元素的索引為4,索引4對應列表的第5個元素,即元素枸杞
注意切片的語法:含前不含后
,即含開始元素,不含結束元素枸杞
。
step=2即步長為2,步長為2可以理解成一次性向前走2步,那就是要跳過1個字符。
3. range( )函數的語法
【列表切片和range函數的區別】
列表切片用英文中括號[]
,range函數用英文圓括號()
。
列表切片的3個參數用英文冒號:
分隔。
range函數的3個參數用英文逗號,
分隔。
列表[star:end:step]
range(star,end,step)
【range( )函數的語法如下】
range(開始字符,結束字符,步長)
range( )函數由4部分組成:
- 函數名:
range
- 英文小括號:
( )
- 3個參數
- 3個參數之間用英文逗號
,
分隔
【參數說明】
- 參數start:表示起始的整數(包含該整數),如果不指定,則默認為
0
。 - 參數end:表示結束的整數(不包含該整數),不能省略。
- 參數step:表示步長,即兩個數之間的間隔。如果省略,則默認為1,當省略該步長時,最后一個英文逗號也可以省略。
【重點提示】
切片和range函數都包括開始字符,不包括結束字符,簡單記憶為含前不含后
。
【返回值】
range函數返回的是一個range對象。
我們可以利用list函數將range對象轉換成列表。
我們可以利用tuple函數將range對象轉換成元組。
【溫馨提示】
range函數不能直接生成列表或元組,必需利用list、tuple函數將其轉換成列表或元組。
3. range函數實操
3.1 只有1個參數
# 創建一個range 函數,將結果賦值給變量r r = range(3) # 輸出r print(r) # 用type函數查看r的數據類型 print(type(r)) # 用list函數將range對象轉換為列表 print(list(r)) # 用tuple函數將range對象轉換為元組 print(tuple(r))
【終端輸出】
range(0, 3)
<class 'range'>
[0, 1, 2]
(0, 1, 2)
【range(3)代碼解析】
這里只有1個參數3
。
只有1個參數表示從整數0開始,步長為1。
start=0
end=3
step=1,即步長為1
【代碼解析:返回值】
我們用type函數查看數據類型,返回的是<class 'range'>
,即是一個range對象。
我們利用list將其轉換成列表,我們可以發現列表中的元素就是一個數學中的等差數列。
為了方便理解,我們可以認為range函數在list函數的作用下,創建的就是一個等差數列。
數列的公差就是步長。
3.2 有2個參數
# 創建一個range 函數,將結果賦值給變量r r = range(2,5) # 輸出r print(r) # 用type函數查看r的數據類型 print(type(r)) # 用list函數將range對象轉換為列表 print(list(r))
【終端輸出】
range(2, 5)
<class 'range'>
[2, 3, 4]
【range(2,5)代碼解析】
start=2,從2開始,包含2。
end=5,到5結束,不包含5。
step=1,步長為1。
因此輸出結果為2,3,4。
3.3 有3個參數
# 創建一個range 函數,將結果賦值給變量r r = range(2,11,3) # 輸出r print(r) # 用type函數查看r的數據類型 print(type(r)) # 用list函數將range對象轉換為列表 print(list(r))
【終端輸出】
range(2, 11, 3)
<class 'range'>
[2, 5, 8]
【range(2,11,3)代碼解析】
start=2,從2開始,包含2。
end=11,到11結束,不包含11。
step=3,步長為3,也可以理解為公差為3的等差數列。
第1個數為2。
第2個數為2+3=5。
第3個數為5+3=8。
第4個數為8+3=11。(不包含)
因此輸出列表中有2,5,8三個數。
3.4 步長為負數
# 創建一個range 函數,將結果賦值給變量r r = range(15,0,-5) # 輸出r print(r) # 用type函數查看r的數據類型 print(type(r)) # 用list函數將range對象轉換為列表 print(list(r))
【終端輸出】
range(15, 0, -5)
<class 'range'>
[15, 10, 5]
【range(15,0,-5)代碼解析】
start=15,從15開始,包含15。
end=0,到0結束,不包含0。
step=-5,步長為-5,也可以理解為公差為-5的等差數列。
第1個數為15。
第2個數為15-5=10。
第3個數為10-5=5。
第4個數為5-5=0。(不包含)
因此輸出列表中有15,10,5三個數。
4. list不能完全替代range
range函數和list函數最終都能生成一個列表,但兩個函數各有優缺點。
# 創建一個整數列表 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]
觀察上面的代碼,我們發現用range函數創建一個有規律的整數列表更為便捷。
list函數需要寫20個元素,但range函數最多寫3個參數就可以完成。
5. 總結
原文鏈接:https://blog.csdn.net/weixin_63986098/article/details/128217023
相關推薦
- 2022-08-12 Android自定義View實現圓形加載進度條_Android
- 2022-11-03 C++編譯期循環獲取變量類型詳情_C 語言
- 2022-04-11 用python的哈希函數對密碼加密_python
- 2022-10-04 .NET??Smobiler的復雜控件的由來與創造_ASP.NET
- 2022-05-02 詳解在Python中使用OpenCV進行直線檢測_python
- 2022-04-17 axios token失效刷新token怎么重新請求_Token 刷新并發處理解決方案
- 2023-03-13 Android布局中margin與padding的區別及說明_Android
- 2022-06-01 如何利用Python將字典轉為成員變量_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支