日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python?range函數之生成器函數的示例_python

作者:安迪python學習筆記 ? 更新時間: 2023-01-05 編程語言

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

欄目分類
最近更新