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中的super用法详解
May 28 Python
Python for Informatics 第11章 正则表达式(一)
Apr 21 Python
在pycharm中设置显示行数的方法
Jan 16 Python
简单了解python单例模式的几种写法
Jul 01 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
Python类的动态绑定实现原理
Mar 21 Python
python对接ihuyi实现短信验证码发送
May 10 Python
Django视图、传参和forms验证操作
Jul 15 Python
Python字典取键、值对的方法步骤
Sep 30 Python
python基于openpyxl生成excel文件
Dec 23 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 Python
Python机器学习实战之k-近邻算法的实现
Nov 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
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
pyv8学习python和javascript变量进行交互
2013/12/04 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
关于Python面向对象编程的知识点总结
2017/02/14 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python实现常见的回文字符串算法
2018/11/14 Python
详解Python用户登录接口的方法
2019/04/17 Python
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
中英双版中文教师求职信
2013/10/27 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
社区安全检查制度
2014/02/03 职场文书
六一儿童节活动总结
2014/08/27 职场文书
写给女朋友的保证书
2015/05/09 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers