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找出序列中出现最多的元素示例代码
Dec 08 Python
python实现简单神经网络算法
Mar 10 Python
python 3.7.0 下pillow安装方法
Aug 27 Python
python虚拟环境完美部署教程
Aug 06 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
python实时监控logstash日志代码
Apr 27 Python
Python QTimer实现多线程及QSS应用过程解析
Jul 11 Python
python根据字典的键来删除元素的方法
Aug 16 Python
利用Python实现自动扫雷小脚本
Dec 17 Python
Pycharm制作搞怪弹窗的实现代码
Feb 19 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
Javascript常考语句107条收集
2010/03/09 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python获取代理IP的实例分享
2018/05/07 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
python生成任意频率正弦波方式
2020/02/25 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
印度服装购物网站:Limeroad
2018/09/26 全球购物
家长写给孩子的评语
2014/04/18 职场文书
贪污检举信范文
2015/03/02 职场文书
校园安全教育心得体会
2016/01/15 职场文书
Golang 切片(Slice)实现增删改查
2022/04/22 Golang