本文实例讲述了Python编程使用*解包和itertools.product()求笛卡尔积的方法。分享给大家供大家参考,具体如下:

【问题】

目前有一字符串s = "['a', 'b'],['c', 'd']",想把它分开成为两个列表:

list1 = ['a', 'b']

list2 = ['c', 'd']

之后使用itertools.product()求笛卡尔积,应该写成:

for i in itertools.product(list1, list2):

print i

结果为:

('a', 'c')

('a', 'd')

('b', 'c')

('b', 'd')

然而使用eval(s)获得的是一个元组。product的参数如果是元组则一定会报错(product的参数是两个列表,每个列表中的元素数量不定)。怎么破?

【解答】

其实只差一个*而已。*是python中一个赋值的技巧,叫做解包。相信很多人都见过def func(*args, **kwargs)这种写法,在函数中,*代表不定个数的参数,以tuple的方式传入,**则是以dict的方式。在使用函数的时候,也可以有类似的方法,调用func(*args)函数时,相当于把一个元组args拆开,当成参数传进函数中。只是这样做要小心的是,args中含有的元素数量及类型必须跟该函数定义一致,否则会报SyntaxError: invalid syntax语法错误。

例如,在这道题中,就可以写成:

for i in itertools.product(*eval(s)):

print i

就可以出来结果了。

这个问题用到的三个技巧:

(1)itertools.product()求笛卡尔积。itertools这个模块中有相当多的牛逼闪闪的数学算法,比如全排列函数permutations,组合函数combinations等等,有时候想要一个数学类的函数又不想自己写,可以在这里找找,没准有惊喜。

(2)eval()字符串求值。eval和exec这两个python中的逆天函数,强大到让人不太放心其安全性。

(3)*解包。上面已经解释过了,其实用到的场合感觉挺有限的,有印象即可,能在无路可走的时候灵光一现就好,别太指望它给你的程序带来多大好处。

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

本文标题: Python编程使用*解包和itertools.product()求笛卡尔积的方法

本文地址: http://www.cppcns.com/jiaoben/python/214989.html

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

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

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

  2. python编程基础:python 实现GUI(图形用户界面)编程详解

    今天小编就为大家分享一篇python 实现GUI(图形用户界面)编程详解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 Python支持多种图形界面的第三方库,包括: wxWidge ...

  3. python解包操作_python基础篇笔记02 文件操作 序列解包**星号语法

    文件的数据是存放于硬盘上的,因而只存在覆盖.不存在修改这么一说,我们平时看到的修改文件, 都是模拟出来的效果,具体的说有两种实现方式: 方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修 ...

  4. python算法详解 张玲玲_Python算法详解

    目 录 第 1章 算法概述 1 1.1 算法的基础 2 1.1.1 算法的特征 2 1.1.2 何为算法 2 1.2 计算机中的算法 3 1.2.1 认识计算机中的算法 3 1.2.2 为什么说算法是 ...

  5. python达梦数据库_Python 编程可以访问达梦数据吗?

    可以,但官方只给了python2.7版本的包,python3目前无法使用,此外达梦自己的linux客户端只支持redhat或者centos.请首先在系统安装达梦客户端,下载地址如下: 具体流程如下: ...

  6. python的数据库操作_Python对数据库操作

    Windows下安装MySQL-python linux下安装MySQL-python以连接MySQL: 解压后,进入目录下,执行python setup.py install 安装过程中,常会遇到的 ...

  7. zarchiver解压提示出错_zarchiver解压操作出错怎么办 zarchiver解压操作出错解决办法...

    zarchiver解压操作出错怎么办?使用压缩文件进行储存文件的方式已经是十分常见的,但是不免在使用的时候会出现解压出现错误的情况.对于这种情况还不知道怎么解决的小伙伴们,下面将为大家带来解决的方法, ...

  8. python制作视频播放器_Python编程使用PyQT制作视频播放器

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放 ...

  9. python函数模块概念_python中模块和包的概念

    1.模块 一个.py文件就是一个模块.这个文件的名字是:模块名.py.由此可见在python中,文件名和模块名的差别只是有没有后缀.有后缀是文件名,没有后缀是模块名. 每个文件(每个模块)都是一个独立 ...

最新文章

  1. OMG:为什么用了索引,查询还是慢?
  2. SAP QM中阶之动态修改规则创建
  3. Android清除缓存功能来实现
  4. FFmpeg常用基本命令
  5. 单片机 PWM输出 c
  6. 迭代加深搜索与埃及分数求解
  7. 系统的crontab设定:/etc/crontab
  8. 聊聊自驱团队的构建(四)
  9. TypeScript极速完全进阶指南-2中级篇
  10. 计算机科学类单独分区,2020年中科院JCR分区升级版和基础版区别大解析
  11. Java实现万年历【升级版】
  12. 很好用的绘图软件cad,非常喜欢这个简易方法
  13. 对JavaScript中的 事件 进行疯狂 处理
  14. 应用泛函分析—线性空间
  15. 中英对照泰戈尔《飞鸟集》(一)
  16. 《场景革命》读书笔记
  17. PAT甲级-1118 Birds in Forest (25 分)
  18. 【7gyy】物尽其用win 7收藏夹功能
  19. 电脑调节屏幕亮度快捷键失灵の解决方案
  20. Go语言开发Windows应用

热门文章

  1. 【编程】二叉树的先序、中序、后序遍历
  2. 是什么在吞食我们的科研时间2019-11-24
  3. 那年的12月,那些悟与思2018-12-23
  4. 生活感悟 2018-06-13
  5. 羽毛球比赛裁判常用英语术语
  6. Delphi开发人员的编程习惯
  7. 安装并配置ssh服务器
  8. 内核中用于数据接收的结构体struct msghdr
  9. mybatisPlus分页限制500条数据
  10. 白话详细解读(七)----- Batch Normalization