day12內置_函數 今日內容 生成器 推導式 內置函數一 生成器 什麼是生成器?生成器的本質就是一個迭代器 迭代器是python自帶的 生成器是程式員自己寫的一種迭代器 迭代器是python自帶的 生成器是程式員自己寫的一種迭代器 生成器編寫方式: 1.基於函數編寫 2.推導式方式編寫 1.基於函 ...
今日內容
生成器
推導式
內置函數一
生成器
什麼是生成器?生成器的本質就是一個迭代器
-
迭代器是python自帶的
-
生成器是程式員自己寫的一種迭代器
生成器編寫方式:
-
1.基於函數編寫
-
2.推導式方式編寫
def func():
print('這是一個函數')
return '函數'
func()
def func():
print("這是一個生成器")
yield '生成器'
# 坑!!!,其實這個生成器只能執行一個next,因為只有一個yield
func() # 生成一個生成器
print(func().__next__()) # 啟動生成器
print(func().__next__())
# 上方這句代碼的意思是:創建一個生成器並且執行一個next方法,兩句一樣但互不相干
函數體中出現yield代表要聲明一個生成器
def func():
msg = input("請輸入內容")
yield msg
print("這是第二次啟動")
yield "生成器2"
yield "生成器3"
yield "生成器4"
g = func()
print(next(g))
print(next(g))
print(next(g))
print(next(g)) # 不能超過yield次數
yield和return的區別
相同點:
-
都是返回內容
-
都可以返回多次,但是return寫多個只會執行一個
不同點:
-
return終止函數 yield是暫停生成器
-
yield能夠記錄當前執行位置
一個yield對應一個next
生成器的作用
# 生成器的作用是節省空間
# 可迭代對象:
# 優點: list,tuple,str 節省時間,取值方便,使用靈活(具有自己私有方法)
# 缺點: 大量消耗記憶體
# 迭代器:
# 優點:節省空間
# 缺點:不能直接查看值,使用不靈活,消耗時間,一次性,不可逆行
# 生成器:
# 優點:節省空間,人為定義
# 缺點:不能直接查看值,消耗時間,一次性,不可逆行
# 使用場景:
# 1.當文件或容器中數據量較大時,建議使用生成器
# 數據類型 (pyhton3: range() | python2 :xrange()) 都是可迭代對象 __iter__()
# 文件句柄是迭代器 __iter__() __next__()
沒有send方法就是一個迭代器,具有send方法的就是一個生成器
def func():
lst = [1,2,3,45,6]
lst1 = ["alex","wusir","taibi","baoyuan"]
yield from lst
yield from lst1
# yield 將可迭代對象一次性返回
# yield from 將可迭代對象逐個返回
g = func()
for i in g:
print(i)
推導式
列表推導式:
普通迴圈
print([i for i in range(10)])
print([變數 for迴圈])
篩選
lst = []
print([i for i in range(10) if i % 2 == 0])
print([i for i in range(10) if i > 2])
[操作後的變數 for迴圈 判斷操作]
集合推導式:
普通迴圈
print({i for i in range(10)})
{變數 for迴圈}
篩選
print({i for i in range(10) if i % 2 == 1})
{操作後的變數 for迴圈 操作}
字典推導式:
普通迴圈
print({i: i+1 for i in range(10)})
{鍵:值 for迴圈}
篩選模式
print({i:i+1 for i in range(10) if i % 2 == 0})
{操作的鍵:值 for迴圈 操作}
生成器推導式:
普通模式
tu = (i for i in range(10))
(變數 for迴圈)
篩選模式
tu = (i for i in range(10) if i > 5)
(操作後的變數 for迴圈 操作)
內置函數一
all() 判斷容器中的元素是否都為真
any() 判斷容器中的元素是否有一個為真
bytes() 將字元串進行編碼
callable() 查看對象是否可 調用 == ()
chr() 通過表位序號查找元素
complex() 複數
eval() 神器一
exec() 神器二 神器禁止使用
frozenset() 凍結集合
globals() 查看全局空間變數
hash() 區分可變數據類型和不可變數據類型
help() 查看幫助信息
id() 查看記憶體地址
locals() 查看當前空間變數
oct() 十進位轉八進位
ord() 通過元素獲取當前unicode表位的序號
pow() 冪,兩個參數是求冪,三個參數時求冪後在取餘
repr() 查看數據的原生態
round() 保留小數位
divmod() 求商和餘
bin() 十進位轉二進位