最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

python 标准库itertools,对于迭代器的一些妙手

IT圈 admin 1浏览 0评论

python 标准库itertools,对于迭代器的一些妙手

python标准库itertools模块,真的好用,之前做变量衍生的时候要做笛卡尔积,如果知道这个函数,应该可以节省不少功夫,我这里简单写了几个方法,感兴趣的也可以参考一下官方文档看看,这里放一下3.7的中文官方文档:

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)

以下为输出:

python 标准库itertools,对于迭代器的一些妙手

python标准库itertools模块,真的好用,之前做变量衍生的时候要做笛卡尔积,如果知道这个函数,应该可以节省不少功夫,我这里简单写了几个方法,感兴趣的也可以参考一下官方文档看看,这里放一下3.7的中文官方文档:

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)

以下为输出:

发布评论

评论列表 (0)

  1. 暂无评论