好久没有写博客了!昨天小牛在上海举办了牛友见面会,现场优惠还是比较大,心仪已久加上一时脑热就入手了。以为会有多么开心,其实目前最大的感受就是焦虑!担心电动车被偷,担心电池被偷,担心路上突然被交警叔叔拦下!我想,直到我的小牛真的被偷的那天,这种焦虑才会随之消失。唉,要说这样的焦虑怎么来的,我只能呵呵了:)

下面步入正题:

今天在帮我们家王博处理专利数据的时候,需要对专利数据中的城市和专利主体的合作关系数量进行统计。一项专利其写作主体可能由两个或两个以上主体参与,各个主体又分属不同或者相同的城市,对其合作关系数量进行统计,其实就是对主体及城市进行排列组合。Python的itertools库中提供了combinations方法可以轻松的实现排列组合。使用之前我先自己写了个简单的测试,代码如下:

from itertools import combinations

test_data = {'a', 'a', 'a', 'b'}

for i in combinations(test_data, 2):

print i

上面的代码执行后输出为:

('a', 'b')

这样的输出结果让我觉得很困惑,我预期的结果是:

('a', 'a')

('a', 'a')

('a', 'b')

('a', 'a')

('a', 'b')

('a', 'b')

同一个专利里面的主体不会有重复的情况,但是主体所在的城市就会出现重复的情况,如果使用combinations在进行排列组合时主动忽略掉了重复的值,那我就只能自己来实现城市的排列组合了!自己实现排列组合也不难,但是这似乎不符合Python的风格。再次走读测试代码,突然想到自己构造的输入数据是不是有问题。

然后改成了下面这样:

from itertools import combinations

test_data = ['a', 'a', 'a', 'b']

for i in combinations(test_data, 2):

print i

将大括号换成了中括号后输出结果与预期完全一致!这让我相当困惑。首先是官方文档对combinations方法的介绍说的是:Elements are treated as unique based on their position, not on their value.,意思是combinations处理传入的可迭代参数时是根据迭代元素的位置来确定是否唯一的,和元素的值是否唯一没有关系。那使用{}和[]构建的输入数据有什么不同呢?本来是想写这篇博客记录一下问题,等高手解答或者自己日后再来查证,结果一边写一边整理思路,居然被我找到原因了!

其实很简单:使用大括号{}创建的是集合或者字典,使用中括号[]创建的是数组,而集合具有互异性!

所以不管我在{}里面写了多少个a,其实我传入到combinations方法里面的参数值都只是:'a','b'。知道真相的我表示好尴尬,本来以为遇到一个多么深奥的问题,原来只是我Python的基础知识太欠缺了!搞得我都不好意思把这篇博客发出来了(捂脸)

以上这篇Python使用combinations实现排列组合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: Python使用combinations实现排列组合的方法

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

python实现不重复排列组合_Python使用combinations实现排列组合的方法相关推荐

  1. python实现不重复排列组合_python之itertools的排列组合相关

    最近由于需要做一些排列组合的需要,本来没想到python自带库中会有这功能,还花了点时间写了下,后来翻看python标准库的时候,发现,这货居然直接提供了,而且还提供了几种形式,之间上代码: impo ...

  2. python写排列组合_Python实现的简单排列组合算法示例

    本文实例讲述了Python实现的简单排列组合算法.分享给大家供大家参考,具体如下: 1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍 2.一个列表数据任意组合 主要是利用 ...

  3. python combinations_Python使用combinations实现排列组合的方法

    好久没有写博客了!昨天小牛在上海举办了牛友见面会,现场优惠还是比较大,心仪已久加上一时脑热就入手了.以为会有多么开心,其实目前最大的感受就是焦虑!担心电动车被偷,担心电池被偷,担心路上突然被交警叔叔拦 ...

  4. python log函数怎么打_Python的log日志功能及设置方法

    python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客

  5. 排列组合思维导图_排列组合——排列数专题

    在上篇关于排列组合主要考点的介绍中,正男老师提到:排列组合考点通常可以拆分为排列数考点和组合数考点.排列数考点相关试题可以细分为2类,分别为:穷举问题和限制条件问题.本期正男老师就从近六年内的5道涉及 ...

  6. python 排列组合速度_Python实现的简单排列组合算法示例

    本文实例讲述了Python实现的简单排列组合算法.分享给大家供大家参考,具体如下: 1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍 2.一个列表数据任意组合 主要是利用 ...

  7. python 排列组合算法_python实现高效率的排列组合算法

    组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组 ...

  8. 排列组合思维导图_思维模型10 - Permutations and Combinations | 排列组合

    人生无时无刻不在做决策,有的决策可能只是决定晚上吃什么,而还有一些决策能够决定你后半生的到底能否幸福.我们小时候很多事情都是父母来帮助我们做决定,但是随着年龄的增长,越来越多的事情父母没办法帮我们下决 ...

  9. 子字符串组合 java_abc三字符实现排列组合-JAVA版

    1.概述 在高中的时候经常会遇到一些排列组合的问题,那个时候基本上都是基于公式计算的.其实理论上是可以枚举出来的,而计算机最擅长的事情就是枚举,本文主要讨论a,b,c三个字符的各种排列组合问题,当字符 ...

最新文章

  1. hackerrank杂记
  2. 使用 SQL Server Management Studio (SSMS) 连接 SQL Server实例
  3. Fraction Construction Problem(拓展欧几里德)
  4. 价值199的wp移植Emlog主题模板PandaPRO
  5. ThinkPHP的增、删、改、查
  6. Android基础——数据存储
  7. 嘉年华回顾丨 尚博带你了解腾讯 TXSQL如何 赋能腾讯云分布式数据库 CynosDB
  8. 实现机器学习的循序渐进指南II——决策树
  9. 一体打印机行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  10. ScrollView详解
  11. 四、云计算-国产-华为-运维、灾备和迁移+HCIE Cloud相关知识点+笔试题库
  12. 2019-03-02 致虚极守静笃 读老子《道德经》有感
  13. 什么样的团队才是理想中的团队? (转自AtTeam官微的博客)
  14. Commit cannot be completed since the group has already rebalanced and assign
  15. 股票价格中后取复权的计算
  16. 玩转【斗鱼直播APP】系列之实现无限轮播
  17. 孙子兵法的计是最早的SWOT分析,《孙子兵法》首先不是战法,而是不战之法。首先不是战胜之法,而是不败之法...
  18. C的编译链接及Makefile学习
  19. 13 个 Mongodb GUI 可视化管理工具,总有一款适合你
  20. 孩子数学成绩不好怎么办_小孩子数学差怎么办

热门文章

  1. ubuntu 下 github 使用方法 以及异常修改
  2. linux epoll用法之二
  3. SqlBulkCopy批量插入数据
  4. 华为机试HJ31:单词倒排
  5. 平衡二叉树删除_AVL 平衡树
  6. mysql数据备份数据解决方案_MYSQL数据备份解决方案
  7. java实现qq空间模块_Java实现模拟QQ空间图片上传
  8. form表单提交按钮点击事件先触发还是提交数据先触发_如何实现图片上传并保存到数据库?...
  9. Mysql事务[学习笔记]
  10. nosetest忽略执行指定文件方法