itertools.product:类似于求多个可迭代对象的笛卡尔积。

使用的形式是:

itertools.product(*iterables, repeat=1),

product(X, repeat=3)等价于product(X, X, X)。

1. 直接使用时:分别生成元组,然后合成一个list

importitertools

aa= itertools.product(['西藏','瀑布','湖水'], ['月色','星空'])

bb= list(aa) #按照顺序生成笛卡尔积,repeat默认是1

print(bb)

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种。

当然,也是先合成一个元组再组成list的。

3. 所以也能理解下面的结果是27种了吧

random_list = list(itertools.product(['西藏','瀑布','湖水'], repeat=3))print(random_list)

因为第一层结果是3种可能;执行该操作3次,就形成了第一层的3套一样的结果(每个结果各有3种可能),然后再排列组合就是 3*3*3=27种结果。

4. 如果要从列表中随机取出几个不重复的元素的话(原来的列表本身元素不重复),可用 random.sample 方法。

importrandom

random.seed(1) #设置随机数种子,可用来检测相同的随机数得到的结果是否一致

n= 2aa= random.sample(random_list, n) #随机列表中的n个元素

print(aa)

也就是从上述27种结果中,随机取出2种,得到:

random_list = list(itertools.product(range(1,4), range(1,2)))print(random_list)

n= 2aa= random.sample(random_list, n) #随机列表中的n个元素

print(aa)

参考:

python itertools.product_Python的itertools.product 方法相关推荐

  1. itertools模块中的product方法

    itertools.product(*iterables[, repeat]) 笛卡尔积 创建一个迭代器,生成表示item1,item2等中的项目的笛卡尔积的元组,repeat是一个关键字参数,指定重 ...

  2. python语言编程:itertools.product的简介、使用方法(求笛卡尔积等)之详细攻略

    python语言编程:itertools.product的简介.使用方法(求笛卡尔积等)之详细攻略 目录 itertools的简介 itertools的使用方法 1.求笛卡尔积:根据输入的可遍历对象生 ...

  3. python排序函数set_【Python】排列组合itertools 集合set

    ■itertools 利用python的itertools可以轻松地进行排列组合运算 itertools的方法基本上都返回迭代器 比如 •itertools.combinations('abcd',2 ...

  4. Python标准库:itertools迭代器函数

    一. itertools迭代器函数 itertools包括一组用于处理序列数据集的函数.这个模块提供的函数是受函数式编程语言(如Clojure.Haskell.APL和SML)中类似特性的启发.其目的 ...

  5. python标准库之itertools模块

    itertools是python内置的模块,使用简单且功能强大,这里尝试汇总整理下,并提供简单应用示例:如果还不能满足你的要求,欢迎加入补充. 一.组成 itertools主要来分为三类函数,分别为无 ...

  6. Python 3中的Itertools,例如

    It has been called a "gem" and "pretty much the coolest thing ever," and if you ...

  7. python 排列组合之itertools

    python 排列组合之itertools python 2.6 引入了itertools模块,使得排列组合的实现非常简单:

  8. python itertools combination_Python itertools.combinations 和 itertools.permutations 等价代码实现...

    最近编程时经常要用到排序组合的代码,想当年还抱着一些情况买了一本<组合数学>,不过现在这货也不知道被自己放哪里了,估计不会是垫桌子腿了吧. 由于去年去东北大学考博面试的时候遇到过可能涉及排 ...

  9. 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...

最新文章

  1. 决策树算法(三)——计算香农熵
  2. 黑马程序员pink老师前端入门教程,零基础必看的JavaScript基础语法视频教程(jQuery1)
  3. [html] 如何在页面打开PDF文件?
  4. python裁剪图片并保存_python – 如何从图像中剪切轮廓并将其保存到新文件中
  5. Git设置忽略eclipse配置文件
  6. python批量将pdf转成word_如何用Python把pdf转换成word
  7. 前端程序猿必知:单页面应用的核心
  8. 【Qt串口调试助手】1.4 - 16进制接收/发送
  9. 高薪的 10 倍工程师不能带来 10 倍的产出?
  10. oracle分区索引优化,SQL优化思路结果集重用优化、分区索引优化测试
  11. 如何释放计算机的ip地址,电脑执行释放DNS和更新IP的命令是什么?怎么执行
  12. Mysql数据库日期查询
  13. Idea搭建web服务器
  14. android 环信集成,Android 环信集成使用总结
  15. 淘宝/天猫API接口,获得淘宝商品详情高级版
  16. 用 python 快速「卡通化」人物头像
  17. JAVA团队开发手册 - 1.环境搭建
  18. tplink打印机服务器重置,TP-Link无线路由器打印机设置指南
  19. 英剧《反击》中有意思的镜头
  20. MOS管工作动画原理图详解

热门文章

  1. C#的Equals不区分大小写
  2. jquery高版本全选与全部选无法正常工作
  3. Android:如何使用addJavaScriptInterface
  4. 批量更改Windows操作系统文件名
  5. LINQ to Entities 基于方法的查询语法
  6. python之operator操作符函数
  7. AMDP + XLSX Workbench 报表开发模式
  8. Android Handler主线程和一般线程通信的应用分析
  9. 3月13日 抽奖活动
  10. 职业生涯的8种德---非常重要