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 相关文章推荐
windows下wxPython开发环境安装与配置方法
Jun 28 Python
python进阶教程之函数参数的多种传递方法
Aug 30 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
Python的iOS自动化打包实例代码
Nov 22 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
python实现小世界网络生成
Nov 21 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 Python
python实现替换word中的关键文字(使用通配符)
Feb 13 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
第三节 定义一个类 [3]
2006/10/09 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
PHP创建XML接口示例
2019/07/04 PHP
jQuery中:visible选择器用法实例
2014/12/30 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
浅谈Python的异常处理
2016/06/19 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
创业计划书模版
2014/02/05 职场文书
信息技术教学反思
2014/02/12 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
综艺节目策划方案
2014/06/13 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
优秀团员事迹材料
2014/12/25 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
vue实现滑动解锁功能
2022/03/03 Vue.js
vue+iview实现手机号分段输入框
2022/03/25 Vue.js
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android