python实现不重复排列组合_Python使用combinations实现排列组合的方法
好久没有写博客了!昨天小牛在上海举办了牛友见面会,现场优惠还是比较大,心仪已久加上一时脑热就入手了。以为会有多么开心,其实目前最大的感受就是焦虑!担心电动车被偷,担心电池被偷,担心路上突然被交警叔叔拦下!我想,直到我的小牛真的被偷的那天,这种焦虑才会随之消失。唉,要说这样的焦虑怎么来的,我只能呵呵了:)
下面步入正题:
今天在帮我们家王博处理专利数据的时候,需要对专利数据中的城市和专利主体的合作关系数量进行统计。一项专利其写作主体可能由两个或两个以上主体参与,各个主体又分属不同或者相同的城市,对其合作关系数量进行统计,其实就是对主体及城市进行排列组合。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实现排列组合的方法相关推荐
- python实现不重复排列组合_python之itertools的排列组合相关
最近由于需要做一些排列组合的需要,本来没想到python自带库中会有这功能,还花了点时间写了下,后来翻看python标准库的时候,发现,这货居然直接提供了,而且还提供了几种形式,之间上代码: impo ...
- python写排列组合_Python实现的简单排列组合算法示例
本文实例讲述了Python实现的简单排列组合算法.分享给大家供大家参考,具体如下: 1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍 2.一个列表数据任意组合 主要是利用 ...
- python combinations_Python使用combinations实现排列组合的方法
好久没有写博客了!昨天小牛在上海举办了牛友见面会,现场优惠还是比较大,心仪已久加上一时脑热就入手了.以为会有多么开心,其实目前最大的感受就是焦虑!担心电动车被偷,担心电池被偷,担心路上突然被交警叔叔拦 ...
- python log函数怎么打_Python的log日志功能及设置方法
python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客
- 排列组合思维导图_排列组合——排列数专题
在上篇关于排列组合主要考点的介绍中,正男老师提到:排列组合考点通常可以拆分为排列数考点和组合数考点.排列数考点相关试题可以细分为2类,分别为:穷举问题和限制条件问题.本期正男老师就从近六年内的5道涉及 ...
- python 排列组合速度_Python实现的简单排列组合算法示例
本文实例讲述了Python实现的简单排列组合算法.分享给大家供大家参考,具体如下: 1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍 2.一个列表数据任意组合 主要是利用 ...
- python 排列组合算法_python实现高效率的排列组合算法
组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组 ...
- 排列组合思维导图_思维模型10 - Permutations and Combinations | 排列组合
人生无时无刻不在做决策,有的决策可能只是决定晚上吃什么,而还有一些决策能够决定你后半生的到底能否幸福.我们小时候很多事情都是父母来帮助我们做决定,但是随着年龄的增长,越来越多的事情父母没办法帮我们下决 ...
- 子字符串组合 java_abc三字符实现排列组合-JAVA版
1.概述 在高中的时候经常会遇到一些排列组合的问题,那个时候基本上都是基于公式计算的.其实理论上是可以枚举出来的,而计算机最擅长的事情就是枚举,本文主要讨论a,b,c三个字符的各种排列组合问题,当字符 ...
最新文章
- hackerrank杂记
- 使用 SQL Server Management Studio (SSMS) 连接 SQL Server实例
- Fraction Construction Problem(拓展欧几里德)
- 价值199的wp移植Emlog主题模板PandaPRO
- ThinkPHP的增、删、改、查
- Android基础——数据存储
- 嘉年华回顾丨 尚博带你了解腾讯 TXSQL如何 赋能腾讯云分布式数据库 CynosDB
- 实现机器学习的循序渐进指南II——决策树
- 一体打印机行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- ScrollView详解
- 四、云计算-国产-华为-运维、灾备和迁移+HCIE Cloud相关知识点+笔试题库
- 2019-03-02 致虚极守静笃 读老子《道德经》有感
- 什么样的团队才是理想中的团队? (转自AtTeam官微的博客)
- Commit cannot be completed since the group has already rebalanced and assign
- 股票价格中后取复权的计算
- 玩转【斗鱼直播APP】系列之实现无限轮播
- 孙子兵法的计是最早的SWOT分析,《孙子兵法》首先不是战法,而是不战之法。首先不是战胜之法,而是不败之法...
- C的编译链接及Makefile学习
- 13 个 Mongodb GUI 可视化管理工具,总有一款适合你
- 孩子数学成绩不好怎么办_小孩子数学差怎么办