Python 中的排列组合

在本教程中,我们将学习如何使用 Python 获得给定数据的排列和组合。我们将使用 Python 内置包来查找给定数字的排列和组合。

排列组合是数学中必不可少的一部分。 Python 提供了 itertools 库,该库具有计算排列和组合的内置函数。

导入所需的库

为了计算排列和组合,我们需要导入 itertools 库。我们可以使用下面的命令导入它。


import itertools

上面的语句将导入 itertools 库,并形成其功能的路径。

现在,我们需要创建一个序列列表作为输入。这个输入列表将返回由排列和组合组成的元组。我们还可以设置排列组合的长度。

排列

排列是一个集合的排列,其中顺序很重要。 Python itertools 模块提供了内置的置换()方法来查找置换。让我们理解下面的例子。

示例-


from itertools import permutations
seq = permutations(['1','2','3'])
print(seq)
for p in list(seq):
   print(p)

输出:

 ('1', '2', '3')
('1', '3', '2')
('2', '1', '3')
('2', '3', '1')
('3', '1', '2')
('3', '2', '1') 

在上面的代码中,我们已经导入了 itertools 模块。我们称之为置换()方法,它以字符串作为参数,并提供一个 itertools 对象。有必要使用 for循环来获得每个置换。

我们来看两组排列。

示例- 2


from itertools import permutations
seq = permutations(['A','B'])
for p in list(seq):
   print(p)

输出:

('A', 'B')
('A', 'C')
('B', 'C')

示例- 3


from itertools import permutations
list1 = [1, 2, 3, 4]
seq = permutations(list1)
print(seq)
for p in list(seq):
   print(p)

输出:

(1, 2, 3, 4)
(1, 2, 4, 3)
(1, 3, 2, 4)
(1, 3, 4, 2)
(1, 4, 2, 3)
(1, 4, 3, 2)
(2, 1, 3, 4)
(2, 1, 4, 3)
(2, 3, 1, 4)
(2, 3, 4, 1)
(2, 4, 1, 3)
(2, 4, 3, 1)
(3, 1, 2, 4)
(3, 1, 4, 2)
(3, 2, 1, 4)
(3, 2, 4, 1)
(3, 4, 1, 2)
(3, 4, 2, 1)
(4, 1, 2, 3)
(4, 1, 3, 2)
(4, 2, 1, 3)
(4, 2, 3, 1)
(4, 3, 1, 2)
(4, 3, 2, 1)

在上面的代码中,我们得到了多个整数的组合。

固定长度的置换

我们可以计算固定长度集合的置换,其中我们只取每个元素置换的指定数量。让我们理解下面的例子。

示例-


from itertools import permutations
seq = permutations(['H', 'e', 'l', 'l', 'o'], 3)
for p in list(seq):
   print(p)

输出:

('H', 'e')
('H', 'l')
('H', 'l')
('H', 'o')
('e', 'H')
('e', 'l')
('e', 'l')
('e', 'o')
('l', 'H')
('l', 'e')
('l', 'l')
('l', 'o')
('l', 'H')
('l', 'e')
('l', 'l')
('l', 'o')
('o', 'H')
('o', 'e')
('o', 'l')
('o', 'l')

在上面的代码中,我们通过传递长度为 2 来计算固定置换。

字符串的组合

组合是顺序无关紧要的元素的集合。Python itertools 模块提供了组合()方法来计算给定数据的组合。我们可以计算一个字符串的组合。让我们理解下面的例子。

示例-


import itertools

seq = "ABC"

com_seq = itertools.combinations(seq, 2)

for c in com_seq:
    print(c)

输出:

('A', 'B')
('A', 'C')
('B', 'C')

结合更换

itertools 模块由另一个名为combination with replacement()的方法组成,该方法也考虑了数字本身的组合。让我们理解它的例子。

数字集的组合


from itertools import combinations_with_replacement

com = combinations_with_replacement(['J', 'a', 'v', 'a', 't', 'p', 'o', 'i', 'n', 't'], 2)
#Print the list of combinations

for c in list(com):
   print(c)

输出:

('J', 'J')
('J', 'a')
('J', 'v')
('J', 'a')
('J', 't')
('J', 'p')
 ('J', 'o')
('J', 'i')
('J', 'n')
('J', 't')
('a', 'a')
('a', 'v')
('a', 'a')
('a', 't')
('a', 'p')
('a', 'o')
('a', 'i')
('a', 'n')
('a', 't')
('v', 'v')
('v', 'a')
('v', 't')
('v', 'p')
('v', 'o')
('v', 'i')
('v', 'n')
('v', 't')
('a', 'a')
('a', 't')
('a', 'p')
('a', 'o')
('a', 'i')
('a', 'n')
('a', 't')
('t', 't')
('t', 'p')
('t', 'o')
('t', 'i')
('t', 'n')
('t', 't')
('p', 'p')
('p', 'o')
('p', 'i')
('p', 'n')
('p', 't')
('o', 'o')
('o', 'i')
('o', 'n')
('o', 't')
('i', 'i')
('i', 'n')
('i', 't')
('n', 'n')
('n', 't')
('t', 't')

数字集的组合

如果给定的输入是按排序顺序的,组合元组将按排序顺序返回。让我们理解下面的例子。

示例-


import itertools
v = [1, 2, 3, 4]

com_seq = itertools.combinations_with_replacement(v, 3)

for i in com_seq:
    print(i)

输出:

(1, 1, 1)
(1, 1, 2)
(1, 1, 3)
(1, 1, 4)
(1, 2, 2)
(1, 2, 3)
(1, 2, 4)
(1, 3, 3)
(1, 3, 4)
(1, 4, 4)
(2, 2, 2)
(2, 2, 3)
(2, 2, 4)
(2, 3, 3)
(2, 3, 4)
(2, 4, 4)
(3, 3, 3)
(3, 3, 4)
(3, 4, 4)
(4, 4, 4)

在本教程中,我们讨论了 itertools 模块,使用 Python 脚本来查找给定数据的排列和组合。


原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/288435.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-24 02:59
下一篇 2024-12-24 02:59

相关推荐

  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29

发表回复

登录后才能评论