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 cookielib 登录人人网的实现代码
Dec 19 Python
python批量替换页眉页脚实例代码
Jan 22 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
Jan 30 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
如何通过命令行进入python
Jul 06 Python
Python如何设置指定窗口为前台活动窗口
Aug 12 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
Sep 04 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 Python
Python基础之字符串格式化详解
Apr 21 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
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
Python函数中定义参数的四种方式
2014/11/30 Python
python更新列表的方法
2015/07/28 Python
Python实现的简单dns查询功能示例
2017/05/24 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
linux面试题参考答案(8)
2015/08/11 面试题
送餐员岗位职责范本
2014/02/21 职场文书
教师网络培训感言
2014/03/09 职场文书
培训师岗位职责
2015/02/14 职场文书
小学教师岗位职责
2015/04/02 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python