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这种神奇的模块。
网友评论