Python標準庫itertools模組使用方法

來源:互聯網
上載者:User

簡介

官方描述:Functional tools for creating and using iterators.即用於建立高效迭代器的函數。

itertools.chain(*iterable)

將多個序列作為一個單獨的序列返回。
例如:

import itertoolsfor each in itertools.chain('i', 'love', 'python'):    print each

輸出:

ilovepython

itertools.combinations(iterable, r)

返回指定長度的"組合"
例如:

import itertoolsfor each in itertools.combinations('abc', 2):    print each

輸出:

('a', 'b')('a', 'c')('b', 'c')

itertools.combinations_with_replacement(iterable, r)

返回指定長度的“組合”,組合內元素可重複
例如:

import itertoolsfor each in itertools.combinations_with_replacement('abc', 2):    print each

輸出:

('a', 'a')('a', 'b')('a', 'c')('b', 'b')('b', 'c')('c', 'c')

itertools.product(*iterable[,repeat])

返回指定長度的所有組合,可理解為笛卡爾乘積
例如:

import itertoolsfor each in itertools.product('abc', repeat=2):    print each

('a', 'a')
('a', 'b')
('a', 'c')
('b', 'a')
('b', 'b')
('b', 'c')
('c', 'a')
('c', 'b')
('c', 'c')

itertools.premutations(iteravle[,r])

返回長度為r的排列
例如:

import itertoolsfor value in itertools.permutations('abc', 2):    print value

輸出:

('a', 'b')('a', 'c')('b', 'a')('b', 'c')('c', 'a')('c', 'b')

itertools.compress(data,selector)

返回selector為True的data對應元素
例如:

import itertoolsfor each in itertools.compress('abcd', [1, 0, 1, 0]):    print each

輸出:

ac

itertools.count(start=0,step=1)

返回以start開始,step遞增的序列,無限遞增
例如:

import itertoolsfor each in itertools.count(start=0, step=2):    print each

輸出:

123..

itertools.cycle(iterable)

將迭代器進行無限迭代
例如:

import itertoolsfor each in itertools.cycle('ab'):    print each

輸出:

abab..

itertools.dropwhile(predicate, iterable)

直到predicate為真,就返回iterable後續資料, 否則drop掉
例如:

import itertoolsfor each in itertools.dropwhile(lambda x: x<5, [2,1,6,8,2,1]):    print each

輸出:

6821

itertools.groupby(iterable[,key])

返回一組(key,itera),key為iterable的值,itera為等於key的所有項
例如:

import itertoolsfor key, vale in itertools.groupby('aabbbc'):    print key, list(vale)

輸出:

a ['a', 'a']b ['b', 'b', 'b']c ['c']

itertools.ifilter(predicate, iterable)

返回predicate結果為True的元素迭代器,如果predicate為None,則返回所有iterable中為True的項
例如:

import itertoolsfor value in itertools.ifilter(lambda x: x % 2, range(10)):    print value

輸出:

13579

itertools.ifilterfasle(predicate,iterable)

返回predicate為False的元素,如果predicate為None,則返回所有iterable中為False的項
例如:

import itertoolsfor value in itertools.ifilterfalse(lambda x: x % 2, range(10)):    print value

輸出:

02468

itertools.imap(function,*iterables)

相當於迭代器方式的map()
例如:

import itertoolsfor value in itertools.imap(lambda x, y: x+y, (1,2,3), (4,5,6)):    print value

輸出:

579

itertools.islice(iterable, start,stop[,step])

相當於迭代器方式的切片操作
例如:

import itertoolsfor value in itertools.islice('abcdefg', 1, 4, 2):    print value

輸出:

bd

itertools.repeat(object,[,times])

不停的返回object對象,如果指定了times,則返回times次
例如:

import itertoolsfor value in itertools.repeat('a', 2):    print value

輸出:

aa

itertools.starmap(function,iterable)

返回function(iter)的值,iter為iterable的元素
例如:

import itertoolsfor value in itertools.starmap(lambda x, y: x * y, [(1, 2), (3, 4)]):    print value

輸出:

212

itertools.takewhile(predicate,iterable)

如果predicate為真,則返回iterable元素,如果為假則不再返回,break.
例如:

import itertoolsfor value in itertools.takewhile(lambda x: x < 5, [1, 3, 5, 6]):    print value

輸出:

13

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.