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

下面步入正题:

今天在帮我们家王博处理专利数据的时候,需要对专利数据中的城市和专利主体的合作关系数量进行统计。一项专利其写作主体可能由两个或两个以上主体参与,各个主体又分属不同或者相同的城市,对其合作关系数量进行统计,其实就是对主体及城市进行排列组合。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_Python使用combinations实现排列组合的方法相关推荐

  1. python实现不重复排列组合_Python使用combinations实现排列组合的方法

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

  2. Python编程:itertools库排列组合

    itertools库包含: 无限迭代器 有限序列处理 排列组合 range对象 # 添加函数说明 def print_info(obj: "iter object") -> ...

  3. python求组合数c_python实现排列组合公式C(m,n)求值

    python实现排列组合公式C(m,n)求值 实验六 理解浮点数运算的误差 实验目的: 1.理解组合数定义式的化简 2.理解浮点数运算的误差可能带来的问题 错误代码 def func(m,n): re ...

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

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

  5. Python 字符串和数字的排列组合,无重复

    字符串的排列组合 def perms(s=''): if len(s)<=1: #长度为1的字符串,排列组合就是自己 return [s] sl=[] #放结果 for i in range(l ...

  6. Python,小学奥数排列组合题4位数的密码

    一道小学奥数排列组合题,一个4位数的密码,每位数都不为0,4个数字之和为9,求有多少种不同的密码. 用for循环找出密码的范围,用str和int函数,匹配已知条件,用if语句进行判断. ''' 一个4 ...

  7. python combinations_python – itertools.combinations()的输出

    我是 python编程的新手(好吧,编程一般),所以我真的希望有人可以帮助我使用内置的itertools.combinations函数. 我试图从52张卡的列表中创建所有可能组合7卡组合的列表,即52 ...

  8. 【组合数学】排列组合 ( 排列组合示例 )

    文章目录 一.排列组合示例 1 ( 组合 | 乘法法则 | 加法法则 ) 二.排列组合示例 2 参考博客 : [组合数学]基本计数原则 ( 加法原则 | 乘法原则 ) [组合数学]集合的排列组合问题示 ...

  9. UVA10063 Knuth‘s Permutation【排列组合】

    There are some permutation generation techniques in Knuth's book "The Art of Computer Programmi ...

最新文章

  1. 进程特征码遍历VC版
  2. python flask源码解析_浅谈flask源码之请求过程
  3. 类QQ右下角弹出框(Qt)
  4. ios12关闭设置角标_iOS 12.4.2为停产的设备带来了安全修复程序
  5. NoSQL数据库全方位比较
  6. 在Go群里摸鱼两月认识了几位号主大佬
  7. python多重继承super父类参数_多重继承如何处理super()和不同的参数?
  8. Equinox MANIFEST.MF 中文处理 Bug
  9. 局域网管理工具_局域网vnc远程控制软件,七款免费又好用的局域网vnc远程控制...
  10. java什么是自动类型转换_java自动类型转换
  11. china-pub近期免费赠书活动大汇总
  12. GLSL 创建自己的着色器
  13. Ubuntu+OpenCV学习汉字点阵,图片打印汉字
  14. Ae 表达式语言引用​:Comp
  15. educoder:实验二 数字类型及其操作(新)
  16. React之lazy与suspense
  17. CTF中WINHex修改图片大小——bugku杂项题-隐写
  18. unity 数字键的输入及刚体的速度的设置
  19. 谷歌学术国内镜像网址收集-查文献
  20. Cesium实现卫星在轨绕行

热门文章

  1. Python Class 类继承变量的使用方法
  2. Flask框架(一)--搭建,请求,静态文件,模板(日历制作)
  3. r54500u核显相当于什么显卡
  4. 自己动手写CPU(8)转移指令+延迟槽解决流水线控制相关
  5. mysql调优(六)--索引的基础知识
  6. 结构体和结构体指针(一)
  7. mongodb命令:日期时间的插入及查询
  8. python数据分析与人工智能_正版 Python数据分析与可视化 微课视频版 魏伟一 李晓红 大数据与人工智能技术丛书 程序源码...
  9. 对树的遍历和二叉树遍历之间的关系的理解
  10. formdata怎么传数组_关于javascript:将数组附加到FormData并通过AJAX发送