python标准库itertools模块,真的好用,之前做变量衍生的时候要做笛卡尔积,如果知道这个函数,应该可以节省不少功夫,我这里简单写了几个方法,感兴趣的也可以参考一下官方文档看看,这里放一下3.7的中文官方文档:https://www.kancloud.cn/cnhuzi/python/1081715
import itertools
# itertools模块groupby(iterable, fun)函数,可以把迭代器中的元素按照指定函数来分组
first_group = lambda x: x[0]
names = ['John', 'Paul', 'George', 'Ringo']
for i, j in itertools.groupby(names, first_group):
print(i, list(j))
print('-----------------------------------------------------')
# itertools模块combinations(iterable, k )方法可以创建一个迭代器,返回iterable中所有长度为r的子序列(不考虑顺序问题),返回的子序列中的项按输入iterable中的顺序排序
# 例如我输入2 就是两两组合,但是不考虑顺序
for i, j in itertools.combinations(names, 2):
print(i, j)
print('-----------------------------------------------------')
# itertools模块permutations(iterable, k),可以创建一个迭代器,返回iterable中所有长度为r的子序列,返回的子序列中的项按输入iterable中的顺序排序
# 例如我输入2 就是两两组合,而且考虑顺序
for i, j in itertools.permutations(names, 2):
print(i, j)
print('-----------------------------------------------------')
# itertools模块product(iterable, repeat),生成输入的迭代器的笛卡尔积,结果为元组,类似于嵌套for循环
for i, j in itertools.product(names, repeat=2):
print(i, j)
以下为输出: