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 相关文章推荐
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
python set集合使用方法解析
Nov 05 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
python列表的逆序遍历实现
Apr 20 Python
Python实现扫码工具的示例代码
Oct 09 Python
pytorch __init__、forward与__call__的用法小结
Feb 27 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
Python的randrange()方法使用教程
2015/05/15 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
Django如何配置mysql数据库
2018/05/04 Python
python字符串格式化方式解析
2019/10/19 Python
python解析多层json操作示例
2019/12/30 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
介绍一下OSI七层模型
2012/07/03 面试题
党员教师批评与自我批评发言稿
2014/10/15 职场文书
领导班子整改方案
2014/10/25 职场文书
幼儿园教师求职信
2015/03/20 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
新闻稿格式范文
2015/07/18 职场文书
《中彩那天》教学反思
2016/02/24 职场文书