Python itertools.product方法代码实例

作者:yaominghui 时间:2023-01-19 03:18:31 

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,itertools,product
0
投稿

猜你喜欢

  • Anaconda环境克隆、迁移的详细步骤

    2022-02-22 08:36:47
  • 深入了解Golang官方container/heap用法

    2024-05-13 10:44:42
  • PHP count_chars()函数讲解

    2023-06-05 09:17:25
  • Python实现计算图像RGB均值方式

    2024-01-01 20:50:31
  • 强悍的Python读取大文件的解决方案

    2021-12-26 19:25:28
  • Python元组常见操作示例

    2023-06-28 20:48:26
  • Vue CLI3.0中使用jQuery和Bootstrap的方法

    2023-07-02 17:08:15
  • windows 下python+numpy安装实用教程

    2022-06-26 09:52:26
  • 利用 python 对目录下的文件进行过滤删除

    2022-07-01 01:24:32
  • Python必备基础之闭包和装饰器知识总结

    2022-05-21 22:34:30
  • 一篇文章读懂Golang init函数执行顺序

    2024-04-27 15:40:37
  • 浅谈ADO.NET数据库脚本

    2024-01-22 16:51:23
  • 获取服务器传来的数据 用JS去空格的正则表达式

    2024-04-16 09:31:07
  • python3实现高效的端口扫描

    2023-07-23 12:18:06
  • django 创建过滤器的实例详解

    2023-07-09 16:25:00
  • Python使用win32com实现的模拟浏览器功能示例

    2023-09-21 14:13:13
  • python用分数表示矩阵的方法实例

    2023-12-22 21:58:11
  • go日志库logrus的安装及快速使用

    2024-04-26 17:31:40
  • 在Python中通过getattr获取对象引用的方法

    2023-08-24 23:32:33
  • T-SQL篇如何防止SQL注入的解决方法

    2024-01-23 16:51:06
  • asp之家 网络编程 m.aspxhome.com