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之不要红头文件(1)
Sep 28 Python
用Python中的wxPython实现最基本的浏览器功能
Apr 14 Python
python设计模式大全
Jun 27 Python
python django事务transaction源码分析详解
Mar 17 Python
安装Python和pygame及相应的环境变量配置(图文教程)
Jun 04 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
Python中新式类与经典类的区别详析
Jul 10 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
pyqt5 QlistView列表显示的实现示例
Mar 24 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
python全栈开发语法总结
Nov 22 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
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
javascript bom是什么及bom和dom的区别
2015/11/26 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
基于Python log 的正确打开方式
2018/04/28 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
Python求解正态分布置信区间教程
2019/11/20 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
教师的实习鉴定
2013/12/15 职场文书
专业技术职务聘任书
2014/03/29 职场文书
社区灵活就业证明
2014/11/03 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
Redis基本数据类型String常用操作命令
2022/06/01 Redis