迭代器和生成器

2022-05-08 01:09:10 字數 2247 閱讀 7385

怎麼判斷他是不是迭代器?

兩種方法

1 "__iter__" in dir(object)  #判斷是不是可迭代的  #注意__iter__要加引號

2.引入模組

li = [1,2,3,4,5]

from collections import iterable  #判斷是不是可迭代的

print(isinstance(li,iterable))

from collections import iterator   #判斷是不是迭代器

print(isinstance(li,iterator))

今日內容大綱

1.生成器表示式,列表推導式(其他推導式)

2.內建函式

一.列表推導式

l = [i for i in range(1,14)]

[變數(加工後的變數) for 變數  in  iterable]  迴圈模式

l1 = ["python%s期"  %i  for i in range(1,14)]

優點:1.節省**,一行搞定. 

2.看著高大上

缺點:不好排錯

整體:凡使用列表推導式構造的列表物件,用其他方式都可構建,複雜的列表推導式構建不出的.

列表推導式比較有魔性

[變數(加工後的變數) for 變數  in iterable  if  條件]  篩選模式

li = [i for i in range(1,14) if i%3==0]

生成器表示式

l1 = ["python%s期"%i  for i in range(1,14)]

g_obj = ("python%s期"%i for i in range(1,14))  迴圈模式

for  i  in  g_obj:

print(i)

g_obj = ("python%s期"%i for i in range(1,14) if 條件)  篩選模式

生成器:兩種方式:1.生成器函式  yield   2. 生成器表示式

為什麼有生成器?

生成器本身是自己用python**構建的.這樣就滿足了個性化需求,滿足以後工作中需要

字典推導式:

mase =

dic =

二.內建函式.

一些常用的功能,python都給封裝好了,供我們直接使用.

1.1作用域相關

globals()  永遠是全域性     

locals()  當前位置區域性所有變數以及函式名等資料

1.2其他相關

1.2.1 字串型別**的執行eval  ,  exec  ,  complie

eval:執行字串型別的**,並返回最終結果

print("1+3")

print(eval("1+3"))

print(eval(""))

exec:執行字串型別的**,返回none

code ="""

for i in range(1,14):  #一定要注意要頂格寫

print(i)

"""print(exec(code))

1.2.2輸入輸出相關

input:函式接受乙個標準輸入資料返回str型別

print:列印輸出

print(1,2,3,sep= "!")#sep是設定每個元素的連線符

print(666,end=" ")#end= "\n"預設換行

1.2.3記憶體相關

hash:獲取乙個物件(可雜湊物件:int,str,bool,tuple)的雜湊值

print(hash("name"))

print(hash(100))

print(hash(true)) 等同於 print(hash(1))

id 用於獲取物件的記憶體位址

1.2.5幫助

help:函式用於檢視函式或模組用途的詳細說明

print(help(str))

1.2.6呼叫相關

callable:函式用於檢查乙個物件是否可呼叫的,如果返回true,object仍然可能呼叫失敗,但如果返回false,呼叫物件object絕對不會成功.

例:def  func():

print("你好美")

a = 2

func()

print(callable(func))    #列印的結果是true  所以func是可呼叫的

print(callable(a))         #列印的結果是false  所以a是不可呼叫的

生成器和迭代器

可以直接作用於for迴圈的物件稱為可迭代物件 iterable.可以用isinstance 判斷乙個物件是否是iterable物件。isinstance iterable true isinstance iterable true isinstance 235,iterable false 而生成器...

迭代器和生成器

1 迭代器的概念 print dir 告訴我列表的所有用法 有雙下劃線的所有方法叫做雙下方法,是c語言已經寫好的方法。你可以用不止一種方法呼叫它。列表的用法變集合 set dir 求交集 set dir set dir set dir 求列表,字典,字串它們的用法的交集 他們共同的用法 iterab...

生成器和迭代器

1.iterator 迭代器 舉例 我們對list使用for for i in 1,2,3,4 print i 12 34對string物件使用for for ch in python print ch py thon對字典物件使用for for k in print k yx對檔案使用for fo...