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实现带声音的摩斯码翻译实现方法
May 20 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
Python动态赋值的陷阱知识点总结
Mar 17 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
树莓派实现移动拍照
Jun 22 Python
华为2019校招笔试题之处理字符串(python版)
Jun 25 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
Jun 25 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
使用py-spy解决scrapy卡死的问题方法
Sep 29 Python
Python标准库之typing的用法(类型标注)
Jun 02 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
相对路径转化成绝对路径
2007/04/10 PHP
php中$this->含义分析
2009/11/29 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
php图片添加水印例子
2016/07/20 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
JavaScript模块详解
2017/12/18 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
python pip如何手动安装二进制包
2020/09/30 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
大四学年自我鉴定
2013/11/13 职场文书
制药工程专业个人求职自荐信
2014/01/25 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
学生干部培训方案
2014/06/12 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
Java 多线程并发FutureTask
2022/06/28 Java/Android