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)


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种,于是它们的组合就有666=216种。


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

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

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

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

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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import random
random.seed(1)   #设置随机数种子,可用来检测相同的随机数得到的结果是否一致n = 2
aa = random.sample(random_list, n)   #随机列表中的n个元素
print(aa)

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

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 方法相关推荐

  1. python itertools.product_Python的itertools.product 方法

    itertools.product:类似于求多个可迭代对象的笛卡尔积. 使用的形式是: itertools.product(*iterables, repeat=1), product(X, repe ...

  2. Python中itertools.product()函数调用

    此次刷题过程中接触到Python中itertools包的product函数调用. product(A,B)用于求可迭代对象A和B的笛卡尔积(后续实例说明),和嵌套的for循环等价, 即product( ...

  3. python解包操作_Python编程使用*解包和itertools.product()求笛卡尔积的方法

    本文实例讲述了Python编程使用*解包和itertools.product()求笛卡尔积的方法.分享给大家供大家参考,具体如下: [问题] 目前有一字符串s = "['a', 'b'],[ ...

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

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

  5. python itertools.product_在python中,如何拆分itertools.product分组并在p中迭代

    在python中我使用itertools.product迭代一个字符列表的所有可能的组合,从而产生非常大的结果. 然而,当我查看Windows10任务管理器时,执行此任务的python进程只占用13. ...

  6. Python小技巧:使用*解包和itertools.product()求笛卡尔积(转)

    leetcode上做提示时候看到有高人用这个方法解题 [问题] 目前有一字符串s = "['a', 'b'],['c', 'd']",想把它分开成为两个列表: list1 = [' ...

  7. Python中的itertools.product

    例子1:import itertools a = itertools.product([1,2,3],[100,200]) print(a) for item in itertools.product ...

  8. python中itertools的用法,【python日用】itertools.product用法

    标准语法 itertools.product(*iterables[, repeat]) 含义 Cartesian product of input iterables. Roughly equiva ...

  9. python的itertools库_Python标准库itertools模块使用方法

    简介 官方描述:Functional tools for creating and using iterators.即用于创建高效迭代器的函数. itertools.chain(*iterable) ...

最新文章

  1. tensorflow机器学习模型的跨平台上线
  2. 64位 vs2010 和 opencv2.4.4 配置问题
  3. 采用SwipeFreshLayout+Recyclerview实现下拉刷新和上拉加载更多以及CoordinatorLayout的引入
  4. 404. Sum of Left Leaves 左叶子之和
  5. 2012 Microsoft Intern Hiring Written Test [转]
  6. 具备这些特征,轻松进入互联网大厂成为web前端工程师
  7. wpf 客户端【JDAgent桌面助手】开发详解(三) 瀑布流效果实现与UI虚拟化优化大数据显示...
  8. linux之git入门命令
  9. 想要配置文件生效 需要通过添加到web.xml加载到内存中
  10. [ASM] 基础概念
  11. 【爬虫实战】9应用Python网络爬虫——利用Post定向爬取下载慕课MOOC视频
  12. linux DSA 开发上手笔记(一)
  13. mean shift 跟踪算法
  14. pr剪辑打开多个项目_写给后期剪辑新手的PR软件基础操作全流程指南
  15. 汽车驾驶 - 如何调整汽车后视镜
  16. mysql表操作之完整性约束
  17. callee与caller的区别
  18. jenkins安装配置
  19. Linux 网络 I/O 模型简介(图文)
  20. 关于显卡copy占用来回跳动解决方法

热门文章

  1. mybatis高级(3)_延迟加载_深度延迟_一级缓存_二级缓存
  2. 企业路由器应用——DMZ口
  3. JS小功能(操作Table--动态添加删除表格及数据)实现代码
  4. AnyChat Server SDK与SDK Filter Plus有何差异?
  5. 我的技术博客在博客园落户了
  6. tomcat6 优化初步
  7. ASP.NET的五大数据控件分析
  8. python购物车程序-Python编写购物车程序
  9. 【整理】SAP系统内核和ABAP版本
  10. 【已修正】SAP中各个环境的简介