python編程基礎之二十七

來源:互聯網
上載者:User

標籤:for   pre   運算式   list   分享   索引值   img   替換   函數   

列表產生式:[exp for iter_var in iterable]

同樣也會有字典產生式,集合產生式,沒有元組產生式,元組產生式的文法被佔用了

字典產生式,集合產生式,就是外面那個括弧換成{}  字典裡面一個個是索引值對,集合可以與之區分

產生器:有兩種寫法:

一種就是寫一個產生式放到()裡面,這就是一個產生器,

 1 #將列表產生式中的[]替換成() 2 ge = (x for x in range(1,6)) 3 print(ge,type(ge)) 4  5 #產生器需要通過next()方法擷取資料,調用一次則返回一個資料 6 print(next(ge)) 7 print(next(ge)) 8 print(next(ge)) 9 print(next(ge))10 print(next(ge))
View Code

 

yiled運算式

  yield語句一次返回一個結果,在每個結果中間,掛起函數的狀態,以便下次重它離開的地方繼續執

 1 #通過函數和yield關鍵字產生 2 #使用了 yield 的函數被稱為產生器(generator) 3 #yield語句一次返回一個結果,在每個結果中間,掛起函數的狀態,以便下次從它離開的地方繼續執行 4  def test(n): 5   for i in range(1,n + 1): 6       yield i 7       #print(i) 8 #得到產生器 9  result = test(10)10  print(result)11  12  #產生器只能遍曆一次, 所以下面不會有任何輸出13  for x in result:14       print(x)15       
View Code

 

迭代對象:可以用for in 結構的都是迭代對象,常用的有list , set ,tuple ,dict, str,產生器

判斷是否是迭代器,可以用isinstance(,Iterable)判斷,需要匯入Iterable

1 #引入 from collection  import Iterable2 from collections import Iterable3 print(isinstance("",Iterable))#True4 print(isinstance({},Iterable))#True5 print(isinstance((),Iterable))#True6 print(isinstance(1,Iterable))#False
View Code

 

迭代器:那些產生器都是迭代器,迭代器都是迭代對象,但是迭代對象不一定是迭代器

判斷方式也是用同一個函數參數要換成Iterator  需要匯入Iterator , Iterable

1 from collections import  Iterator,Iterable2 print(isinstance([],Iterator))  #False3 print(isinstance((),Iterator))  #False4 print(isinstance({},Iterator))  #False5 print(isinstance("",Iterator))  #False6 print(isinstance((x for x in range(0,6)),Iterator))  #True 產生器是迭代器7 print(isinstance((x for x in range(0,6)),Iterable)) #True 產生器也是迭代對象
迭代器

 迭代器可以和迭代對象之間轉換

1 print(isinstance(iter([]),Iterator)) #True2 print(isinstance(iter(()),Iterator)) #True3 print(isinstance(iter({}),Iterator)) #True4 print(isinstance(iter(""),Iterator)) #True5 6 l2 = iter(l1)  #將列錶轉換為迭代器7 print(next(l2))  #使用next擷取迭代器中的元素
View Code

 

python編程基礎之二十七

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.