这是一个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的更多相关文章

  1. 【Python】排列组合itertools & 集合set

    ■itertools 利用python的itertools可以轻松地进行排列组合运算 itertools的方法基本上都返回迭代器 比如 •itertools.combinations('abcd',2 ...

  2. python编写排列组合,密码生产功能

    python编写排列组合 python在编写排列组合是会用到  itertools 模块 排列 import itertools mylist = list(itertools.permutation ...

  3. python 实现排列组合

    1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍. 2.一个列表数据任意组合 2.1主要是利用自带的库 #_*_ coding:utf-8 _*_ #__author__ ...

  4. python 编写排列组合

    python在编写排列组合是会用到  itertools 模块 排列 import itertools mylist = list(itertools.permutations([)) # 全排列 p ...

  5. Python实现排列组合

    # -*- coding: utf-8 -*-"""Created on Sat Jun 30 11:49:56 2018 @author: zhen"&quo ...

  6. python解决排列组合

    笛卡尔积:itertools.product(*iterables[, repeat]) import itertools for i in itertools.product('BCDEF', re ...

  7. python算法-排列组合

    排列组合 一.递归 1.自己调用自己 2.找到一个退出的条件 二.全排列:针对给定的一组数据,给出包含所有数据的排列的组合 1:1 1,2:[[1,2],[2,1]] 1,2,3:[[1,2,3],[ ...

  8. python之排列组合测试

    # test permutations and combinations import itertools as it for i in it.combinations('abcd',2): prin ...

  9. python自带的排列组合函数

    需求: 在你的面前有一个n阶的台阶,你一步只能上1级或者2级,请计算出你可以采用多少种不同的方法爬完这个楼梯?输入一个正整数表示这个台阶的级数,输出一个正整数表示有多少种方法爬完这个楼梯. 分析:提炼 ...

  10. python排列组合之itertools模块

    1. 参考 几个有用的python函数 (笛卡尔积, 排列, 组合) 9.7. itertools — Functions creating iterators for efficient loopi ...

随机推荐

  1. Element库的Vue版本ElementUI的本地引入方法

    最近刚接触ElementUI,发现官方介绍的使用方法中只有npm安装和CDN引入这两种方式,没有本地引入的方法. 因为我的学习环境有时候是断网状态的,所以自己研究了一下本地引入的方法,记录在此. 1. ...

  2. Spring Cloud Alibaba AI 入门与实践

    一.概述 Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用. 可参考文章<S ...

  3. python连接pgsql&mysql

    1.python连接pgsql import psycopg2 def connect_pgsql(list_sql): conn = psycopg2.connect(host='db_host', ...

  4. Solution -「LNOI 2022」「洛谷 P8367」盒

    \(\mathscr{Desription}\)   Link.   有 \(n\) 个盒子排成一排,第 \(i\) 个盒子内有 \(a_i\) 个球.球可以在相邻盒子间传递,\(i\) 与 \(i+ ...

  5. Solution Set -「LOCAL」冲刺省选 Round VII

    \(\mathscr{Summary}\)   三道结论题,毁灭吧.   A 题一开始思路偏了,发现答案最高 bit 能固定之后接下来的结论就顺理成章了.   B 题哈哈哈哈又是经典:我结论猜对了,然 ...

  6. Solution -「CF 1290F」Making Shapes

    \(\mathscr{Description}\)   给定平面向量集 \(\newcommand{\vct}[1]{\boldsymbol{#1}}\{\vct v_n\}\),求从 \((0,0) ...

  7. w3cschool-Netty 实战精髓篇3

    https://www.w3cschool.cn/essential_netty_in_action/essential_netty_in_action-wd1j28dq.html Netty Web ...

  8. Spring源码分析基本介绍

    Spring源码分析(一)基本介绍   摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 前言 作为一名开发人员,阅读源码 ...

  9. Collection接口方法

     Collection 接口继承树 Collection 接口Collection 接口是 List.Set 和 Queue 接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 ...

  10. 原生input上传视拼,参数形式 file: (binary)形式的

    <input type="file" @change="demo"> if(e.target.files[0]&&e.target. ...