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 ...
随机推荐
- Web端IM系统:RainbowChat-Web v4.0发布
关于RainbowChat-Web ► RainbowChat-Web详细介绍:http://www.52im.net/thread-2483-1-1.html► 历史版本更新记录:http://ww ...
- elasticsearch数据导出和导入
数据导入和导出依赖于命令 elasticdump 数据导出 #!/bin/bash ES=http://ip:port ED=数据保存位置 datename=$(date +%Y-%m-%d) #da ...
- [软件工具使用记录] windows离线ollama部署本地模型并配置continue实现离线代码补全
qwen2.5coder发布之后,觉得差不多可以实现离线模型辅助编程了,所以尝试在公司内网部署模型,配合vsocde插件continue实现代码提示.聊天功能. 目前使用qwen2.5coder的32 ...
- 巧用VTable打造炫酷金字塔图表
在数据分析和可视化领域,表格是展示数据直观.有效的方式之一.今天,就让我们来探索如何利用VTable这个强大的表格组件,制作出既美观又富有信息量的金字塔图表,以及深入了解VTable中各种单元格类型的 ...
- Swagger介绍和应用
1.什么是swaggerSwagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.简单来说,Swagger是一个功能强大的接口管理工具,并且提供了多种编程语言的 ...
- biancheng-Django(python)
http://c.biancheng.net/django/ Django MTV和MVC的区别 1. MVC设计模式 我们先对 MVC 设计模式进行介绍,它是 Web 设计模式的经典之作,MTV 模 ...
- Vite构建项目记录
背景 微信推送了一些公众号文章,所 vite 已经跟新到 v6 版本了,于是构建一个 vite 项目看下啥变化 过程 直接打开 https://vite.dev/ 官网,切换问中文语言,找到此处 ht ...
- MacOS修改应用快捷键的一般思路
具体步骤为: 使用CheatSheet软件查看菜单项名称 在系统设置中修改菜单项的快捷键 举个例子:修改Chrome中左右切换tab的快捷键(系统语言为英文,中文同理) 默认采用Ccontrol Ta ...
- Numa初识
本文分享自天翼云开发者社区<Numa初识>,作者:j****n Numa产生 在二十世纪九十年代被开发出来的. 首次商业化实现基于NUMA的Unix系统的是对称多处理XPS-100系列服务 ...
- Q:以非root用户编辑定时任务报错You are not allowed to use this program(crontab)
编辑定时删除文件任务时报错 crontab -e 编辑定时任务时报错,如下图所示 问题原因:/etc/cron.allow中没有添加对应的用户名解决办法:切换到root用户,在/etc/cron.al ...