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 相关文章推荐
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
Python3.6正式版新特性预览
Dec 15 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
python实现画出e指数函数的图像
Nov 21 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
pycharm如何实现跨目录调用文件
Feb 28 Python
python3 使用traceback定位异常实例
Mar 09 Python
python实现自动化群控的步骤
Apr 11 Python
python如何正确使用yield
May 21 Python
Matplotlib绘制混淆矩阵的实现
May 27 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中PDO基础教程 入门级
2011/09/04 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
教你学会使用Python正则表达式
2017/09/07 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
Django之form组件自动校验数据实现
2020/01/14 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
python代码如何注释
2020/06/01 Python
Python 读取位于包中的数据文件
2020/08/07 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
家长写给老师的建议书
2014/03/13 职场文书
OpenFeign实现远程调用
2022/08/14 Java/Android