Python itertools.product方法代码实例


Posted in Python onMarch 27, 2020

itertools.product:类似于求多个可迭代对象的笛卡尔积。

使用的形式是:

itertools.product(*iterables, repeat=1),

product(X, repeat=3)等价于product(X, X, X)。

1. 直接使用时:分别生成元组,然后合成一个list

import itertools
aa = itertools.product(['西藏','瀑布','湖水'], ['月色','星空'])
bb = list(aa)  #按照顺序生成笛卡尔积,repeat默认是1
print(bb)

Python itertools.product方法代码实例

2. 假设设置:repeat=3

random_list = list(itertools.product(['西藏','瀑布','湖水'], ['月色','星空'], repeat=3))
print(random_list) #此list长度为216

为什么会是216呢?

首先,在不设置 repeat 参数的时候,默认是1,生成的list长度时6 —— 这可以用数学的排列组合来表示,从第一个参数['西藏','瀑布','湖水']取出一个值,有3种可能;从第二个参数['月色','星空']取出一个值,有2种可能;故 3*2=6种结果。

然后,当设置 repeat=3 时,也就是说将 repeat=1(默认)的结果再重复2次后(也就是最后一共有3套一样的第一层结果)再进行排列组合,从第一个结果(6种结果)取出一个元素的可能有6种,同理,从第二第三个重复结果中取出一个元素的可能各有6种,于是它们的组合就有6*6*6=216种。

Python itertools.product方法代码实例

当然,也是先合成一个元组再组成list的。

3. 所以也能理解下面的结果是27种了吧

random_list = list(itertools.product(['西藏','瀑布','湖水'], repeat=3))
print(random_list)

因为第一层结果是3种可能;执行该操作3次,就形成了第一层的3套一样的结果(每个结果各有3种可能),然后再排列组合就是 3*3*3=27种结果。

4. 如果要从列表中随机取出几个不重复的元素的话(原来的列表本身元素不重复),可用 random.sample 方法。

import random
random.seed(1)  #设置随机数种子,可用来检测相同的随机数得到的结果是否一致
n = 2
aa = random.sample(random_list, n)  #随机列表中的n个元素
print(aa)

也就是从上述27种结果中,随机取出2种,得到:

Python itertools.product方法代码实例

5. 此方法可以用于生成随机的坐标

random_list = list(itertools.product(range(1,4), range(1,2)))
print(random_list)
n = 2
aa = random.sample(random_list, n)  #随机列表中的n个元素
print(aa)

Python itertools.product方法代码实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详细解读Python的web.py框架下的application.py模块
May 02 Python
剖析Python的Twisted框架的核心特性
May 25 Python
python实现的二叉树定义与遍历算法实例
Jun 30 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
Python Pandas数据结构简单介绍
Jul 03 Python
python实现大文件分割与合并
Jul 22 Python
Django单元测试工具test client使用详解
Aug 02 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
Selenium基于PIL实现拼接滚动截图
Apr 10 Python
解决pip install psycopg2出错问题
Jul 09 Python
Django migrate报错的解决方案
May 20 Python
python实现图像全景拼接
Mar 27 #Python
如何在Python 游戏中模拟引力
Mar 27 #Python
Python 实现平台类游戏添加跳跃功能
Mar 27 #Python
django配置app中的静态文件步骤
Mar 27 #Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 #Python
django实现HttpResponse返回json数据为中文
Mar 27 #Python
python对XML文件的操作实现代码
Mar 27 #Python
You might like
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
php计算整个目录大小的方法
2015/06/19 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
php命令行写shell实例详解
2018/07/19 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
js静态作用域的功能。
2006/12/25 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
Python中特殊函数集锦
2015/07/27 Python
Python使用gensim计算文档相似性
2016/04/10 Python
django session完成状态保持的方法
2018/11/27 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
C# Debug和Testing相关面试题
2015/10/25 面试题
计算机应用与科学个人的自我评价
2013/11/15 职场文书
大学校园毕业自我鉴定
2014/01/15 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
城管个人总结
2015/02/28 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
教师学习心得体会范文
2016/01/21 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python