python实现排列组合--itertools
这是一个python自带的工具集,简单好用功能强大,能够大大提升编写代码效率。
功能不止排列组合,其他的用用加深理解了再整理。
官方文档:https://docs.python.org/zh-cn/3/library/itertools.html
1.1、itertools.permutations()
所有可能的排列,元素不可以重复出现,第一个元素是字符集,第二个元素是组合的长度。
itertools.permutations('ABCD', 2)——>AB AC AD BA BC BD CA CB CD DA DB DC
import itertools
chars='qwer'
for comb in itertools.permutations(chars,4):
print(comb)
('q', 'w', 'e', 'r')('q', 'w', 'r', 'e')('q', 'e', 'w', 'r')('q', 'e', 'r', 'w')
('q', 'r', 'w', 'e')('q', 'r', 'e', 'w')('w', 'q', 'e', 'r')('w', 'q', 'r', 'e')
('w', 'e', 'q', 'r')('w', 'e', 'r', 'q')('w', 'r', 'q', 'e')('w', 'r', 'e', 'q')
('e', 'q', 'w', 'r')('e', 'q', 'r', 'w')('e', 'w', 'q', 'r')('e', 'w', 'r', 'q')
('e', 'r', 'q', 'w')('e', 'r', 'w', 'q')('r', 'q', 'w', 'e')('r', 'q', 'e', 'w')
('r', 'w', 'q', 'e')('r', 'w', 'e', 'q')('r', 'e', 'q', 'w')('r', 'e', 'w', 'q')
1.2、itertools.product()
所有可能的排列,元素是可以重复出现的,第一个元素是字符集,第二个元素是组合的长度,加“repeat=”。
itertools.product('ABCD', repeat=2)——>AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
import itertools
chars='qw'
for comb in itertools.product(chars,repeat=4):
print(comb)
('q', 'q', 'q', 'q')('q', 'q', 'q', 'w')('q', 'q', 'w', 'q')('q', 'q', 'w', 'w')
('q', 'w', 'q', 'q')('q', 'w', 'q', 'w')('q', 'w', 'w', 'q')('q', 'w', 'w', 'w')
('w', 'q', 'q', 'q')('w', 'q', 'q', 'w')('w', 'q', 'w', 'q')('w', 'q', 'w', 'w')
('w', 'w', 'q', 'q')('w', 'w', 'q', 'w')('w', 'w', 'w', 'q')('w', 'w', 'w', 'w')
1.3、itertools.combinations()
字符出现顺序限制为和字符集字符顺序一致的所有可能排列,不出现重复元素。
itertools.combinations('ABCD', 2)——>AB AC AD BC BD CD
import itertools
chars='qwerty'
for comb in itertools.combinations(chars,4):
print(comb)
('q', 'w', 'e', 'r')('q', 'w', 'e', 't')('q', 'w', 'e', 'y')('q', 'w', 'r', 't')
('q', 'w', 'r', 'y')('q', 'w', 't', 'y')('q', 'e', 'r', 't')('q', 'e', 'r', 'y')
('q', 'e', 't', 'y')('q', 'r', 't', 'y')('w', 'e', 'r', 't')('w', 'e', 'r', 'y')
('w', 'e', 't', 'y')('w', 'r', 't', 'y')('e', 'r', 't', 'y')
1.4、itertools.combinations_with_replacement()
字符出现顺序限制为和字符集字符顺序一致的所有可能排列,重复元素会出现。
itertools.combinations_with_replacement('ABCD', 2)——>AA AB AC AD BB BC BD CC CD DD
import itertools
chars='qwer'
for comb in itertools.combinations_with_replacement(chars,4):
print(comb)
('q', 'q', 'q', 'q')('q', 'q', 'q', 'w')('q', 'q', 'q', 'e')('q', 'q', 'q', 'r')
('q', 'q', 'w', 'w')('q', 'q', 'w', 'e')('q', 'q', 'w', 'r')('q', 'q', 'e', 'e')
('q', 'q', 'e', 'r')('q', 'q', 'r', 'r')('q', 'w', 'w', 'w')('q', 'w', 'w', 'e')
('q', 'w', 'w', 'r')('q', 'w', 'e', 'e')('q', 'w', 'e', 'r')('q', 'w', 'r', 'r')
('q', 'e', 'e', 'e')('q', 'e', 'e', 'r')('q', 'e', 'r', 'r')('q', 'r', 'r', 'r')
('w', 'w', 'w', 'w')('w', 'w', 'w', 'e')('w', 'w', 'w', 'r')('w', 'w', 'e', 'e')
('w', 'w', 'e', 'r')('w', 'w', 'r', 'r')('w', 'e', 'e', 'e')('w', 'e', 'e', 'r')
('w', 'e', 'r', 'r')('w', 'r', 'r', 'r')('e', 'e', 'e', 'e')('e', 'e', 'e', 'r')
('e', 'e', 'r', 'r')('e', 'r', 'r', 'r')('r', 'r', 'r', 'r')
python实现排列组合--itertools的更多相关文章
- 【Python】排列组合itertools & 集合set
■itertools 利用python的itertools可以轻松地进行排列组合运算 itertools的方法基本上都返回迭代器 比如 •itertools.combinations('abcd',2 ...
- python编写排列组合,密码生产功能
python编写排列组合 python在编写排列组合是会用到 itertools 模块 排列 import itertools mylist = list(itertools.permutation ...
- python 实现排列组合
1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍. 2.一个列表数据任意组合 2.1主要是利用自带的库 #_*_ coding:utf-8 _*_ #__author__ ...
- python 编写排列组合
python在编写排列组合是会用到 itertools 模块 排列 import itertools mylist = list(itertools.permutations([)) # 全排列 p ...
- Python实现排列组合
# -*- coding: utf-8 -*-"""Created on Sat Jun 30 11:49:56 2018 @author: zhen"&quo ...
- python解决排列组合
笛卡尔积:itertools.product(*iterables[, repeat]) import itertools for i in itertools.product('BCDEF', re ...
- python算法-排列组合
排列组合 一.递归 1.自己调用自己 2.找到一个退出的条件 二.全排列:针对给定的一组数据,给出包含所有数据的排列的组合 1:1 1,2:[[1,2],[2,1]] 1,2,3:[[1,2,3],[ ...
- python之排列组合测试
# test permutations and combinations import itertools as it for i in it.combinations('abcd',2): prin ...
- python自带的排列组合函数
需求: 在你的面前有一个n阶的台阶,你一步只能上1级或者2级,请计算出你可以采用多少种不同的方法爬完这个楼梯?输入一个正整数表示这个台阶的级数,输出一个正整数表示有多少种方法爬完这个楼梯. 分析:提炼 ...
- python排列组合之itertools模块
1. 参考 几个有用的python函数 (笛卡尔积, 排列, 组合) 9.7. itertools — Functions creating iterators for efficient loopi ...
随机推荐
- 在C#中如何设置DateTimePicker控件显示“年-月-日 时:分:秒”的格式
在C#中DateTimePicker控件默认显示的日期格式为"年-月-日",并未显示"时:分:秒",如何设置DateTimePicker控件显示"年- ...
- 直播预览层(AVCaptureVideoPreviewLayer)底层实现
分析sampleBuffer(帧数据) 通过设置AVCaptureVideoDataOutput的代理,就能获取捕获到一帧一帧数据 [videoOutput setSampleBufferDelega ...
- w3cschool-Scala 教程
https://www.w3cschool.cn/scala/ Scala 教程关于基础基础知识(续)Finagle 介绍集合Searchbird模式匹配与函数组合类型和多态基础高级类型简单构建工具更 ...
- 【JMeter】---入门
JMeter入门 一.概述 JMeter是Apache下一款在国外非常流行和受欢迎的开源性能测试工具,JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能. ...
- 在nginx上搭建php服务
不同的操作系统会有不一样 我这里用的是centos系统 首先下载 yum install php php-fpm php-mysqlnd php-gd php-mbstring 其次我们需要修改配置文 ...
- delphi DateUtils强大的时间功能集成
初步说明: CompareDate 比较两个日期时间值日期部分的大小CompareDateTime 比较两个日期时间值的大小CompareTime 比较两个日期时间值时间部分的大小DateOf 去除日 ...
- RestClient 通过拦截器实现请求加密
今天我发现了一个关于请求加密的有效写法,特此分享给大家.如果你的加密需求是将请求参数也包含在内,通常情况下,我们需要先将请求体转换成 JSON 格式或其他对象类型,再使用字符串的形式进行加密操作.以下 ...
- Q:ssh远程连接慢的原因排查
连接linux服务器一般都是使用SSH远程连接的方式.有时,SSH连接速度很慢,大约30s左右,但是ping时一切正常. 问题原因 1.server的sshd会去DNS查找访问的client ip的h ...
- Q: 如何实现右键选择打开文件的应用程序
1.win+R打开cmd窗口,输入regedit,打开注册表 2.依次找到HKEY_CLASSESS_ROOT->*->Shell,下面新建项 "用notepad打开" ...
- Luogu P2292 HNOI2004 L 语言 题解 [ 紫 ] [ AC 自动机 ] [ 状压 dp ]
L 语言:很好的一道状压 dp 题. 思路 看到这题,首先可以想到一个很暴力的 dp,设 \(dp_i\) 表示考虑到第 \(i\) 位能否被理解,暴力匹配字符串转移即可. 第一个优化也很显然,暴力匹 ...