排列组合问题主要有4类:

1、笛卡尔积:
itertools.product(*iterables[, repeat])

2、排列:
itertools.permutations(iterable[, r])

3、组合:
itertools.combinations(iterable, r)

4、组合(包含自身重复):
itertools.combinations_with_replacement(iterable, r)

笛卡尔积:若是单一列表笛卡尔乘积,则包含本身。例子中的AA,BB,CC

import itertoolsfor i in itertools.product('ABC', repeat=2):print(''.join(i), end=" ")
print('\n')  # 输出 AA AB AC BA BB BC CA CB CC# 两个元组进行笛卡尔积:
a = (1, 2)
b = ('A', 'B', 'C')
c = itertools.product(a, b)
for i in c:print(i, end=",")  # 输出(1, 'A') (1, 'B') (1, 'C') (2, 'A') (2, 'B') (2, 'C')

排列:

import itertoolsfor i in itertools.permutations('ABC', 2):print(''.join(i), end=" ")
# 输出 AB AC BA BC CA CB
print('\n')# 全排列:实际场景比较普遍。
# 例如:力扣题 - 没有重复元素集合的全排列:
# https://leetcode-cn.com/problems/VvJkup/data = "ABC"
for i in itertools.permutations(data, len(data)):print(''.join(i), end=" ")# ABC ACB BAC BCA CAB CBA
print('\n')

组合:

import itertoolsfor i in itertools.combinations('ABC', 1):print(''.join(i), end=" ")
# 输出 A B C
print('\n')for i in itertools.combinations('ABC', 2):print(''.join(i), end=" ")
# 输出 AB AC BC
print('\n')for i in itertools.combinations('ABC', 3):print(''.join(i), end=" ")
# 输出 ABC
print('\n')

组合(包含自身重复):

import itertoolsfor i in itertools.combinations_with_replacement('ABC', 1):print(''.join(i), end=' ')# 输出 A B C
print('\n')for i in itertools.combinations_with_replacement('ABC', 2):print(''.join(i), end=' ')# 输出 AA AB AC BB BC CC
print('\n')for i in itertools.combinations_with_replacement('ABC', 3):print(''.join(i), end=' ')# 输出 AAA AAB AAC ABB ABC ACC BBB BBC BCC CCC
print('\n')# 子集:
nums = [1, 2, 3]
new_list = [[], nums]
for i in range(1, len(nums) + 1):for j in itertools.combinations(nums, i):new_list.append(list(j))print(new_list)
# [[], [1, 2, 3], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]

举例:

'BCDEF五个字母组合问题'
import itertoolsprint("1个组合:")
for i, val in enumerate(list(itertools.combinations('BCDEF', 1))):print("序号:%s   值:%s" % (i + 1, ''.join(val)))
print("2个组合:")
for i, val in enumerate(list(itertools.combinations('BCDEF', 2))):print("序号:%s   值:%s" % (i + 1, ''.join(val)))
print("3个组合:")
for i, val in enumerate(list(itertools.combinations('BCDEF', 3))):print("序号:%s   值:%s" % (i + 1, ''.join(val)))
print("4个组合:")
for i, val in enumerate(list(itertools.combinations('BCDEF', 4))):print("序号:%s   值:%s" % (i + 1, ''.join(val)))
print("5个组合:")
for i, val in enumerate(list(itertools.combinations('BCDEF', 5))):print("序号:%s   值:%s" % (i + 1, ''.join(val)))

微信公众号:玩转测试开发
欢迎关注,共同进步,谢谢!

Python:常见排列组合问题处理相关推荐

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

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

  2. python字符串排列组合子集_python编程题:字符串的(所有可能的)排列组合

    前言 在此研究: 1)给定一个字符串,如何对其中字母进行排列组合: 2)进一步了解Python递归. 题目内容 在指定位置编写代码,完成函数,根据给定的字符串,给出组成该字符串的字符的所有排列构成的字 ...

  3. python排序函数set_【Python】排列组合itertools 集合set

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

  4. python生成排列组合_Python 排列组合生成

    zckun:老哥们, 请教一个问题, 是关于排列组合的, 前几天和老哥们讨论了一下, 能是能解决, 但感觉不太方便 看一个简单的例子应该就明白了. to 目前是我这样做的, 用了一个模版 templa ...

  5. python写排列组合_Python实现的简单排列组合算法示例

    本文实例讲述了Python实现的简单排列组合算法.分享给大家供大家参考,具体如下: 1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍 2.一个列表数据任意组合 主要是利用 ...

  6. Python实现排列组合C(n,m) 和 A(n,m)

    1. 从(0,1,2,3,4,5)5个数中随机选择2个数,有多少种选法? 这里用到了scipy库中的两个模块permutation 和 combination (1)选择分先后顺序,即 A 5 2 A ...

  7. python 按从小到大的顺序组合成一个字典_将Python字典排列组合成字典列表

    鉴于字典看起来像这样: { 'Color': ['Red', 'Yellow'], 'Size': ['Small', 'Medium', 'Large'] } 如何创建一个结合了第一个字典键的各种值 ...

  8. python实现排列组合公式算法_朴素贝叶斯算法的Python实现

    朴素贝叶斯分类算法被广泛应用于文本分类场景中.包含垃圾邮件.互联网新闻等分类任务,属于有监督学习算法.它独立考量每一维度特征被分类的条件概率,然后综合这些概率对其所在的特征向量做出分类预测,即&quo ...

  9. Python 基础——排列组合的实现

    考虑这样一个问题,给定一个矩阵(多维数组,numpy.ndarray()),如何shuffle这个矩阵(也就是对其行进行全排列),如何随机地选择其中的k行,这叫组合,实现一种某一维度空间的切片.例如五 ...

  10. python 彩票排列组合_对福彩3D号码进行排列组合为例学习Python的itertools模块的用法...

    这里我们以对福彩3D号码进行排列组合为例学习Python的itertools模块的用法.首先我们选择心仪的号码.比如我们选择4,5,7,8 第一种我们只要组六的组合.代码如下 import itert ...

最新文章

  1. 求积问题[体会Python至简之道]
  2. 03_4_this关键字
  3. network: Android 网络判断(wifi、3G与其他)
  4. OpenCV-Python bindings是如何生成的(1)
  5. java string is empty_从源码分析java.lang.String.isEmpty()
  6. strak组件(5):为列表定制预留钩子方法
  7. MySQL入门02-MySQL二进制版本快速部署
  8. 可视化编辑json数据——json editor
  9. 对两个等长升序的序列查找中位数
  10. 基于因子分析法分析新冠肺炎疫情对房地产业上市公司财务的影响
  11. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener解决方案
  12. 故障恢复控制台主要命令
  13. SVM简单非线性分类,画出分类面与支持向量(MATLAB)
  14. USB-DFP UFP DRP模式
  15. 网络资源的定义--URI,URL,URN
  16. Ceph集群mon节点告警case---low diskspace
  17. PyTorch 笔记Ⅵ——Titanic 及 breast_cancer 分类应用
  18. 供意图转战手机平台的掌机开发者参考的10点建议
  19. 【苹果相册推iMessage】群发执行日历推位置推 ionic platform add ios (增加ios平台)
  20. ZX297520V3T:Codec NAU88C22驱动调试

热门文章

  1. 请相信一个绝地反击的故事
  2. logmein WP 逆向
  3. Photoshop设置图片的背景色为透明
  4. 信息安全导论知识点梳理
  5. 如何利用 HBuilderX 制作图文混排的网页
  6. 打字测试软件 tt,打字测试(TT)
  7. 秀米的编辑的图片无法显示
  8. 王道操作系统2.1.7课后习题--解答题
  9. python 自动输入_鼠标自动点击、键盘自动输入?几行Python代码搞定
  10. 今晚7:30 | 推荐系统中的异构关系学习——香港大学计算机学院助理教授黄超