collections.abc # iterator的模組iterator # 迭代器
iterable # 可迭代物件
functools # 模組引入 reduce
reduce # 高階函式----> 做累計算
dir() # 獲取當前類的所有成員
__closure__ # 獲取閉包函式的使用變數
func().cell_contents # 獲取func()的閉包函式
__iter__ # 判斷是否是可迭代資料
# 概念(可迭代物件不一定是迭代器乙個迭代器就一定是乙個可迭代物件)# 迭代取值的工具,重複上一次的結果而繼續的過程
# 特徵
# 不依賴索引,通過next指標迭代所有資料,一次取乙個值,節省空間
setvar =res = iter(setvar)
print(res)
iter_var = iter()print("__iter__" in dir(iter_var) and "__next__" in dir(iter_var))
"""next在呼叫迭代器中的資料時,是單向不可逆,一條路走到黑的過程
"""iter_var = iter()
print(next(iter_var))
print(next(iter_var)) # 呼叫2次,剩下3元素
# 沒有元素則報錯 -----> stopiteration 報錯 停止迭代
for i in iter_var:
print(i) # i 只能迴圈3次
iter_var = iter() # 重新賦值
from collections import iterator,iterablesetvar =
iter_var = iter(setvar)
print(isinstance(iter_var,iterator))
print(isinstance(setvar,iterable))
# 能夠把函式當成引數傳遞的就是高階函式
"""功能: 把iterable裡面所有資料 一一的放進到func這個函式中進行操作 ,把結果扔進迭代器
引數: func 內建或自定義函式
iterable 具有可迭代性的資料 ([迭代器],[容器型別的資料],[range物件])
返回值:
返回最後的迭代器
"""# 示例一
def func(n):
dic =
dic_new = {}
for k,v in dic.items():
dic_new[v] = k
return dic_new[n]
print(list(map(func,["a","b","c"])))
"""功能: 過濾資料
return true 當前這個資料保留
return false 當前這個資料捨棄
引數: func : 自定義函式
iterable : 可迭代型資料(容器型別資料,range物件,迭代器)
返回值:
迭代器"""res = filter(lambda i : true if i % 2 == 0 else false , [1,2,3,4,5,6,7,8,9,10] )
print(res)
res = filter(lambda x: type(x) == int ,[11,22,33,"zhou","04內建模組"])
print(res)
"""功能:累計算資料
先把iterable中的前兩個值拿出來,扔到func當中做運算,
把計算的結果和iterable中的第三個元素在扔到func當中做運算,
再把結果算出來,和第四個元素做運算,以此類推
直到所有結果運算完畢.返回該結果
引數: func : 自定義函式
iterable : 可迭代型資料(容器型別資料,range物件,迭代器)
返回值:
計算之後的結果
"""# 示例一 (lst = [5,4,8,8] # => 整型5488)
from functools import reduce
print(reduce(lambda x,y: x*10 + y,[5,4,8,8]))
# 示例二
# "789" => 789 禁止使用int強轉 -> 數字 789
def func1(x,y):
return x*10 + y
def func2(n):
dic =
return dic[n]
# [7,8,9]
print(reduce(func1,map(func2,"789") ))
"""功能:排序
引數: iterable:可迭代型資料(容器型別資料,range物件,迭代器)
key :指定 自定義函式或 內建函式
reverse : 代表公升序或者降序 , 預設是公升序(從小到大排序) reverse=false
返回值:
排序後的list結果
"""# 示例一
lst = [1,2,3,4,5,-90,-4,-1,100]
print(sorted(lst))
# 示例二 (從大到小)
res = sorted(lst,reverse=true)
print(res)
# 示例三 (絕對值排序 abs)
lst = [-10,-1,3,5]
print(sorted(lst,key=abs))
# 示例四 (餘數從大到小排序)
def func(n):
return n % 10
print(sorted(lst,key=func,reverse=true))
# 示例五(集合排序)
setvar=
print(sorted(setvar))
# 示例六(字典排序)
container =
print(sorted(container)) # ['a', 'b', 'c'] 排 key
python 函式高階 迭代器
迭代 可以理解成迴圈,迭代一次,迴圈一次 根據所學知識我們知道,直接作用於for迴圈的資料型別有 一是集合資料型別,如str list,tuple,dict,set等 一類是generator,如,生成器和帶yield的generator function 這些可以直接作用於for迴圈的物件統稱為可...
python迭代器高階
我們之前簡單的了解了一下迭代器,本篇,我們來看看迭代器具體的使用方法吧!lst 1 2,3 4 import dis 引入標準庫dis,用它觀察for迴圈的細節。dis.dis for i in lst pass 1 0 setup loop 12 to 14 2 load name 0 lst 4...
2 3 15 Python 函式高階 迭代器
可以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別,如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function。這些可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。可以使用isinsta...