一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

python itertools和迭代器的使用

 知海行舟 2015-10-21

分類: Python/Ruby


參考:
http://blog.csdn.net/xiaocaiju/article/details/6968123

1. chain的使用
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4. for item in  itertools.chain(listone,listtwo):  
  5.     print item  
輸出:a b c 11 22 abc

2. count的使用

    
  1. i = 0  
  2. for item in itertools.count(100):  
  3.     if i>10:  
  4.         break  
  5.     print item,  
  6.     i = i+1  
  7.       
功能:從100開始數(shù)10個(gè)數(shù),cout返回一個(gè)無界的迭代器,小菜鳥我不會(huì)控制了,就引入了一個(gè)計(jì)數(shù)I,讓它計(jì)數(shù)10次。。
輸出:100 101 102 103 104 105 106 107 108 109 110

3.cycle的使用
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4.   
  5. for item in itertools.cycle(listone):  
  6.     print item,  
打印出a b c a b c a b c a b c a b c a b c a b c a b c a b c...
功能:從列表中取元素,到列表尾后再?gòu)念^取...
無限循環(huán),因?yàn)閏ycle生成的是一個(gè)無界的失代器

4.ifilter的使用
ifilter(fun,iterator)
返回一個(gè)可以讓fun返回True的迭代器,
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4.   
  5. def funLargeFive(x):  
  6.     if x > 5:  
  7.         return True  
  8.       
  9. for item in itertools.ifilter(funLargeFive,range(-10,10)):  
  10.     print item,  

結(jié)果:6 7 8 9

5. imap的使用
imap(fun,iterator)
返回一個(gè)迭代器,對(duì)iterator中的每個(gè)項(xiàng)目調(diào)用fun
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4. listthree = [1,2,3]  
  5. def funAddFive(x):  
  6.     return x + 5  
  7. for item in itertools.imap(funAddFive,listthree):  
  8.     print item,  
返回:6 7 8  對(duì)listthree中的元素每個(gè)加了5后返回給迭代器

6.islice的使用
islice()(seq, [start,] stop [, step])
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4. listthree = listone + listtwo  
  5. for item in itertools.islice(listthree,3,5):  
  6.     print item,  
功能:返回迭代器,其中的項(xiàng)目來自 將seq,從start開始,到stop結(jié)束,以step步長(zhǎng)切割后
打印出:11 22

7.izip的使用
izip(*iterator)
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4. listthree = listone + listtwo  
  5. for item in itertools.izip(listone,listtwo):  
  6.     print item,  
結(jié)果:('a', '11') ('b', '22') ('c', 'abc')
功能:返回迭代器,項(xiàng)目是元組,元組來自*iterator的組合


8. repeate
repeate(elem [,n])
  1. import itertools  
  2. listone = ['a','b','c']  
  3. for item in itertools.repeat(listone,3):  
  4.     print item,  

結(jié)果:['a', 'b', 'c'] ['a', 'b', 'c'] ['a', 'b', 'c']

9.


參考:http://blog.csdn.net/xiaocaiju/article/details/6969401

生成器表達(dá) 式是用來生成函數(shù)調(diào)用時(shí)序列參數(shù)的一種迭代器寫法

生成器對(duì)象可以遍歷或轉(zhuǎn)化為列表(或元組等數(shù)據(jù)結(jié)構(gòu)),但不能切片(slicing)。當(dāng)函數(shù)的唯一的實(shí)參是可迭代序列時(shí),便可以去掉生成器表達(dá)式兩端>的圓括號(hào),寫出更優(yōu)雅的代碼:
>>>> sum(i for i in xrange(10))
 45

sum聲明:

sum(iterable[, start])

Sums start and the items of an iterable from left to right and returns the total. start defaults to 0. The iterable‘s items are normally numbers, and are not allowed to be strings. The fast, correct way to concatenate a sequence of strings is by calling ''.join(sequence). Note that sum(range(n), m) is equivalent to reduce(operator.add, range(n), m) To add floating point values with extended precision, see math.fsum().

參數(shù)要求傳入可迭代序列,我們傳入一個(gè)生成器對(duì)象,完美實(shí)現(xiàn)。。。

注意區(qū)分下面代碼:

上面的j為生成器類型,下面的j為list類型

  1. j = (i for i in range(10))  
  2. print j,type(j)  
  3. print '*'*70  
  4.   
  5. j = [i for i in range(10)]  
  6. print j,type(j)  

結(jié)果:

at 0x01CB1A30>
**********************************************************************
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    精品国产亚洲av成人一区| 九九蜜桃视频香蕉视频| 91免费精品国自产拍偷拍| 婷婷伊人综合中文字幕| 91人妻人人揉人人澡人| 午夜福利视频偷拍91| 五月婷日韩中文字幕四虎| 亚洲熟妇熟女久久精品| 亚洲精品深夜福利视频| 亚洲中文字幕有码在线观看| 东北老熟妇全程露脸被内射| 亚洲在线观看福利视频| 国产精品亚洲一级av第二区| 国产精品免费视频专区| 日本妇女高清一区二区三区| 六月丁香六月综合缴情| 欧美激情床戏一区二区三| 日韩精品一区二区三区四区| 国产真人无遮挡免费视频一区| 日韩中文字幕在线不卡一区| 日韩国产欧美中文字幕| 99热在线播放免费观看| 午夜免费精品视频在线看| 美女激情免费在线观看| 成年女人午夜在线视频| 99久久精品久久免费| 国产伦精品一一区二区三区高清版| 人妻人妻人人妻人人澡| 国产香蕉国产精品偷在线观看| 国语对白刺激高潮在线视频| 国产精品成人一区二区三区夜夜夜| 久久人妻人人澡人人妻| 国产一区欧美一区二区| 福利一区二区视频在线| 熟女一区二区三区国产| 亚洲欧美日本国产有色| 国产在线一区中文字幕 | 亚洲一区精品二人人爽久久| 精品人妻一区二区三区免费| 久久午夜福利精品日韩| 国产日韩欧美专区一区|