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益智游戏计算汉诺塔问题示例
Mar 05 Python
python返回昨天日期的方法
May 13 Python
python实现百万答题自动百度搜索答案
Jan 16 Python
python如何创建TCP服务端和客户端
Aug 26 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
python标准库OS模块函数列表与实例全解
Mar 10 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 06 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 24 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使用反射插入对象示例分享
2014/03/11 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
python进程与线程小结实例分析
2018/11/11 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
实例讲解python中的序列化知识点
2018/10/08 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
简单介绍django提供的加密算法
2019/12/18 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
卡骆驰英国官网:Crocs英国
2019/08/22 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
商务英语应届生自我鉴定
2013/12/08 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
一句话工作感言
2014/03/01 职场文书
效能监察建议书
2014/05/19 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
安全先进班组材料
2014/12/26 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
四年级作文之植物
2019/09/20 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python