Python itertools.product方法代码实例

 更新时间:2020年03月27日 10:51:19   投稿:yaominghui  
这篇文章主要介绍了Python itertools.product方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Django框架验证码用法实例分析

    Django框架验证码用法实例分析

    这篇文章主要介绍了Django框架验证码用法,结合实例形式分析了Python Django框架验证码的功能、实现方法及相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • Python中用Descriptor实现类级属性(Property)详解

    Python中用Descriptor实现类级属性(Property)详解

    这篇文章主要介绍了Python中用Descriptor实现类级属性(Property)详解,本文先是讲解了decorator是什么,然后给出了通过Descriptor来做一个类级的Property实例,需要的朋友可以参考下
    2014-09-09
  • Pandas中DataFrame基本函数整理(小结)

    Pandas中DataFrame基本函数整理(小结)

    这篇文章主要介绍了Pandas中DataFrame基本函数整理(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Python爬虫之Selenium下拉框处理的实现

    Python爬虫之Selenium下拉框处理的实现

    这篇文章主要介绍了Python爬虫之Selenium下拉框处理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python paramiko连接ssh实现命令

    python paramiko连接ssh实现命令

    这篇文章主要为大家介绍了python paramiko连接ssh实现的命令详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 深入了解Python如何操作MongoDB

    深入了解Python如何操作MongoDB

    MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统。本文主要介绍了如何通过Python操作MongoDB,需要的可以参考一下
    2022-01-01
  • Python中[ ]、[:]和[::]的用法总结

    Python中[ ]、[:]和[::]的用法总结

    [:]与[::]语法是通用序列操作(Common Sequence Operations)其中的两个,下面这篇文章主要给大家介绍了关于Python中[ ]、[:]和[::]用法的相关资料,文中通过实例代码介绍的非常全面,需要的朋友可以参考下
    2023-06-06
  • python开发之文件操作用法实例

    python开发之文件操作用法实例

    这篇文章主要介绍了python开发之文件操作用法,以实例形式较为详细的分析了Python针对文件的路径、文件名、后缀名等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • 关于torch.scatter与torch_scatter库的使用整理

    关于torch.scatter与torch_scatter库的使用整理

    这篇文章主要介绍了关于torch.scatter与torch_scatter库的使用整理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 如何使用 Python Timedelta 月份计算日期

    如何使用 Python Timedelta 月份计算日期

    在本篇文章中,我们将通过 timedelta 学习如何在 Python 中使用日期时间, 我们将了解如何计算当前日期或任何其他日期六个月后的日期,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2023-10-10

最新评论