1. 程式人生 > >python itertools迭代器模組學習筆記

python itertools迭代器模組學習筆記

以下函式均返回迭代器

count

原型:

count(start[, step])

返回:

start, start+step, start+2*step, ... (以start為首項, step為公差的等差數列)

example:

count(10):10, 11, 12, 13, .....

cycle

原型:

cycle(p)

返回:

p0, p1, p2,...,plast, p0, p1,...(對序列迴圈遍歷)

repeat

原型

repeat(elem[, n])

返回:

elem, elem, elem...(重複n次或者無限下去)

chain

原型:

chain(p, q, ...)

返回:

p0, p1,..., plast, q0, q1,..., qlast,...(一個一個地遍歷這些序列的,不必生成大序列即可這樣遍歷)

compress

原型:

compress(data d, selector s)

返回:

(d[0]if s[0]),(d[1]if s[1]),...

例子:

from itertools import*for i in compress("abcdef",[1,1,0,1,0,1]):# a, b, d, fprint i

dropwhile

原型:

dropwhile(func f, seq q)

返回:

當函式f執行返回假時, 開始迭代序列

例子:

from itertools import*for i in dropwhile(lambda x:x<5,[1,2,6,4,3]):#6,4,3print i

groupby

原型:

groupby(iterable[, keyfunc])

返回:按照keyfunc函式對序列每個元素執行後的結果分組(每個分組是一個迭代器), 返回這些分組的迭代器

例子:

from itertools import*
a =['aa','ab','abc','bcd','abcde']for i, k in groupby(a, len):#按照字串的長度對
a的每個元素進行分組for m in k:print m,print i

輸出:

aa ab 2
abc bcd 3
abcde 5

ifilter

原型:

ifilter(func, seq)

返回:對函式func執行返回真的元素的迭代器

例子:

from itertools import*
a =[1,2,3,4,5]for i in ifilter(lambda x:x>3, a):#4,5print i

ifilterfalse

原型:

ifilterfalse(func, seq)

返回:對函式func執行返回假的元素的迭代器

islice

原型:

islice(seq[, start], stop[, step])

返回:返回序列seq的從start開始到stop結束的步長為step的元素的迭代器

from itertools import*for i in islice("abcdef",0,4,2):#a, c
    print i

imap

原型:

imap(func, seq)

返回 :返回序列每個元素被func執行後返回值的序列的迭代器

from itertools import*for i in imap(lambda x:x+1, range(10)):#1,2,...,10print i

starup

原型:

starup(func, seq)

返回:對序列seq的每個元素作為func的引數列表執行, 返回執行結果的迭代器

例子:

from itertools import*for i in starmap(pow,[(2,2),(3,2)]):#4,9print i

tee

原型:

tee(it[, n = 2])

把一個迭代器分為n個迭代器, 返回一個元組.預設是兩個

from itertools import*
a ="hello"
c, d = tee(iter(a),2)for i, j in zip(c, d):print i, j

輸出:

h h
e e
l l
l l
o o

takewhile

原型:

takewhile(func, seq)

從序列的頭開始, 直到執行函式func失敗.

例子:

from itertools import*for i in takewhile(lambda x:x<6, range(10)):#1,2,3,4,5print i

izip

雷同於zip

原型:

izip(iter1, iter2, ... iterN):

返回:(it1[0],it2 [0], it3[0], ..), (it1[1], it2[1], it3[1], ..)...

只要提供的某個迭代器不再生成值,迭代就會停止

izip_longest

原型同izip

只不過, 迭代過程會持續到所有輸入迭代變數iter1,iter2等都耗盡為止,如果沒有使用fillvalue關鍵字引數指定不同的值,則使用None來填充已經使用的迭代變數的值

permutations

原型:

permutations(p[, r])

返回p中任意取r個元素做排列的元組的迭代器

例項:

from itertools import*for i in permutations([1,2,3],3):print i

輸出:

(1,2,3)(1,3,2)(2,1,3)(2,3,1)(3,1,2)(3,2,1)

product

原型:

product(iter1, iter2, ... iterN, [repeat=1])

建立一個迭代器,生成表示item1,item2等中的專案的笛卡爾積的元組,repeat是一個關鍵字引數,指定重複生成序列的次數

from itertools import*for i in product([1,2,3],[4,5],[6,7]):print i

輸出:

(1,4,6)(1,4,7)(1,5,6)(1,5,7)(2,4,6)(2,4,7)(2,5,6)(2,5,7)(3,4,6)(3,4,7)(3,5,6)(3,5,7)

combinations()

原型

combinations(iterable, r)

建立一個迭代器,返回iterable中所有長度為r的子序列,返回的子序列中的項按輸入iterable中的順序排序

note:不帶重複

例子:

from itertools import*for i in combinations([1,
            
           

相關推薦

python itertools模組學習筆記

以下函式均返回迭代器 count 原型: count(start[, step]) 返回: start, start+step, start+2*step, ... (以start為首項, step為公差的等差數列) example: count(10):10

Python高階特性(切片 列表生成式 生成器 學習筆記

在Python中,程式碼不是越多越好,而是越少越好。程式碼不是越複雜越好,而是越簡單越好。 基於這一思想,Python中有非常有用的高階特性,1行程式碼能實現的功能,決不寫5行程式碼。請始終牢記,程式碼越少,開發效率越高。 切片 (Slice) 切

學習筆記1

迭代器—不必知道序列底層是怎麼實現的,就可以利用迭代器來訪問一個序列。 任何容器類,都必須有某種方式可以插入元素並將它們再次取回。畢竟,持有事物是容器的最基本的工作。對於List,add()是插入元素的方法之一,而get()是取出元素的方法之一。 迭代器(也是一

java 中 for 、foreach 和 學習筆記

開發十年,就只剩下這套架構體系了! >>>   

Python 模組 itertools

from itertools import chain test = chain('AB', 'CDE', 'F') for el in test: print(el) """ABCDEF""" from itertools import chainfor i in chain([1,2,3

Python 模組 itertools 簡介

Python提供了一個非常棒的模組用於建立自定義的迭代器,這個模組就是 itertools。itertools 提供的工具相當高效且節省記憶體。使用這些工具,你將能夠建立自己定製的迭代器用於高效率的迴圈。這一章,我們將一起看一看這些工具的應用例項以便理解並應用到自己的程式設計中去。 讓我們先從幾個無限

模組 itertools

無限迭代器 itertools 包自帶了三個可以無限迭代的迭代器。這意味著,當你使用他們時,你要知道你需要的到底是最終會停止的迭代器,還是需要無限地迭代下去。 這些無限迭代器在生成數字或者在長度未知的可迭代物件(iterables)中迴圈時相當有用。下面我們開始認識這些有趣的可迭代物件! count(初

Python基礎 與生成器

Python基礎 迭代器與生成器 迭代器 生成器 迭代器 可迭代物件(iterable) 但凡是可以返回一個迭代器的物件都可稱之為可迭代物件,看個例子

python,可物件,生成器理解

上篇文章, python itertools 裡面實現的groupby方法。裡面用到了object, id, iter等很基礎的方法, 看的有點暈。這裡重新整理一下迭代器,可迭代物件, 生成器。複習一下,加深印象。 python語言很容易上手。比如for迴圈。 a = [1, 2,

python

一 迭代的概念 迭代是Python最強大的功能之一,是訪問集合元素的一種方式。 迭代器是一個可以記住遍歷的位置的物件。 迭代器物件從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。 迭代器有兩個基本的方法:iter() 和 next()。 字串,列表或元組物件都可用於建

Python、生成器(yield)、iter函式

# 首先理解迭代器(iterators),迭代器是⼀個讓程式設計師可以遍歷的⼀個容# 器(特別是列表)的物件。然⽽,⼀個迭代器在遍歷並讀取⼀個容器的資料元素時,並不# 會執⾏⼀個迭代。這裡有三個部分要說明:# 可迭代物件(Iterable)# 迭代器(Iterator)# 迭代(Iteration)# 可迭代

python3的itertools函式

# 受到函數語言程式設計的啟發,目的是保證迅速,並且告訴使用記憶體,進行迭代演算法 # 與列表不同,基於迭代器可以提供更好的記憶體特性 # 因為只有在需要的時候才會生成,所以減少記憶體使用 import itertools #itertools.count相當於無限迭代器 # def count(

搞清楚 Python、可物件、生成器

很多夥伴對 Python 的迭代器、可迭代物件、生成器這幾個概念有點搞不清楚,我來說說我的理解,希望對需要的朋友有所幫助。 1 迭代器協議 迭代器協議是核心,搞懂了這個,上面的幾個概念也就很好理解了。 所謂迭代器協議,就是要求一個迭代器必須要實現如下兩個方法 iterator.__iter__(

python 10 和三元運算子

一.迭代器 1.迭代器協議:物件必須提供一種next方法,執行該方法要麼返回迭代中的下一項,要麼引起一個stopIteration異常,終止迭代 2.可迭代物件:實現了迭代器協議的物件 3.python 的內部工具(for,sum,min,max函式),使用迭代器協議訪問物件 二 fo

python協議iterable iterator

from collections.abc import Iterator class Company(object): def __init__(self, employee_list): self.employee = employe

Python(iterator)和生成器(generator)

前言: 迭代的意思是重複做一些事很多次-就像迴圈中那樣,for迴圈中對序列和字典進行迭代,但是實際上也能對其他的物件進行迭代:實現__iter__方法的物件。 迭代器 __iter__方法返回一個迭代器。所謂的迭代器就是具有next方法(方法不需要引數)的物件。在呼叫next方法時,

python基礎——

可以直接作用於for迴圈的資料型別有以下幾種: 一類是集合資料型別,如list、tuple、dict、set、str等; 一類是generator,包括生成器和帶yield的generator function。 這些可以直接作用於for迴圈的物件統稱為可迭代物

python-13-,生成器,協程

列表,字典,字串,元祖都是可迭代物件(Iterable),這就意味著它們是可以使用 for迴圈 進行遍歷。 檢測是否是可迭代物件的方法 isinstance() from collections import Iterable result=isinstanc

Python、可物件、生成器

1、什麼叫迭代 現在,我們已經獲得了一個新線索,有一個叫做“可迭代的”概念。 首先,我們從報錯來分析,好像之所以1234不可以for迴圈,是因為它不可迭代。那麼如果“可迭代”,就應該可以被for迴圈了。 這個我們知道呀,字串、列表、元組、字典、集合都可以被for迴圈,說明他們都是可迭代的

python、生成器、裝飾

一、迭代器 對於Python 列表的 for 迴圈,他的內部原理:檢視下一個元素是否存在,如果存在,則取出,如果不存在,則報異常 StopIteration。(python內部對異常已處理) 迭代器是訪問集合元素的一種方式。迭代器物件從集合的第一個元素開始訪問,直到所有的元素被