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 ...
随机推荐
- IntelliJ IDEA打开Spring Booot项目并使用Maven导入依赖包时提示错误:Cannot resolve com.gexin.platform:gexin-rp-sdk-http:4.1.0.5
构建项目时报错: Cannot resolve com.gexin.platform:gexin-rp-sdk-http:4.1.1.4 gexin-rp-sdk-http:jar:4.1.1.4总 ...
- Linux C语言面试考点
数组 数组初始化方法 /* 以下为自动类型 *//* 一维数组 */int arr[] = {1, 3, 5}; //不指定长度,由编译器自动计算int arr[5] = {0, }; //指定长度 ...
- pip在线安装
# 下载安装脚本 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 运行安装脚本 sudo python3 get-pip.py # ...
- Angular-教程
https://www.runoob.com/angularjs/angularjs-tutorial.html https://www.runoob.com/angularjs2/angularjs ...
- 如何快速的开发一个完整的iOS直播app(采集篇)
作者:袁峥链接:https://www.jianshu.com/p/c71bfda055fa来源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 开发一款直播app,首先需要 ...
- 项目PMP之七项目成本管理
项目PMP之七--项目成本管理 一.定义:在预算内管理成本:预测项目成本 核心理念:重点关注项目活动的成本:同时决策的影响.相关方的不同时间不同方法的测算 趋势:挣值进度(ES)逻辑:敏捷的方式则 ...
- Fo-dicom通过C-store方式发送图片
1 using Dicom.Network; 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 us ...
- 脱离实体类操作数据库(mysql版本)
原理很简单:1.利用mysql的information_schema库,获取对用表的信息: 2.使用DataSource,建立数据库连接,并执行sql脚本: 3.Map的keySet和values集合 ...
- java中的接口和枚举
接口:可以简单的理解为规则 接口的基本语法: interface 接口名称 { 规则属性, 规则行为} 接口 接口其实是抽象的 接口的属性必须是固定的值,并且不能够修改的 属性和行为的访问权限必须是公 ...
- 《HelloGitHub》第 106 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. github.com/521xueweihan/HelloG ...