说说itertools模块里的combinations

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

你可能感兴趣的:(说说itertools模块里的combinations)