itertools基本是我用過的python內置模塊里的top one,超級無敵好用,各種迭代器簡直不要太六,仿佛nltk一般神奇。今天來溫習一下最常用的combinations
combinations()
描述:Return r length subsequences of elements from the input iterable. 根據輸入的數據,創建一個迭代器,返回iterable中所有長度為r的子序列,返回的子序列中的項按輸入iterable中的順序排序 (不帶重復)。def combinations()我覺得暫時先不用深究,看看這個function的原型吧:
combinations(iterable, r)
在這里iterable就是你輸入的數據,r就輸出子序列的長度,舉個栗子:
com1=combinations(‘abcd’, 2)
for i in com1:
print i
output:
('A', 'B')
('A', 'C')
('A', 'D')
('B', 'C')
('B', 'D')
('C', ‘D’)
com2=combinations(‘abcd’, 3)
for i in com2:
print i
output:
('A', 'B', 'C')
('A', 'B', 'D')
('A', 'C', 'D')
('B', 'C', ‘D')
在自迭代的時候,combinations() 的iterable還可以是list或者dict,以下是一個我最近一個項目里用到的場景:
for value in raw_data.itervalues():
com=combinations(value, 2)
注意,在這里,raw_data是一個dict,所以我們必須先聲明調用的是values,我們可以單獨對字典里的值做自迭代。同樣的,這個項目也是為了構建社交網絡,最后還是要感嘆一下python的強大,能內置itertools這種神奇的模塊。