python——permutations()函数

前言:本文讲解涉及到python中join函数,不清楚可以查看下面博客自行了解,另外了解一下和combinations()函数,product()函数三者之间的区别。

python——join和os.path.join()两个函数详细使用说明_xiaofengdada的博客-CSDN博客

python——combinations()函数_xiaofengdada的博客-CSDN博客

python——product()函数_xiaofengdada的博客-CSDN博客

一、概述

Itertools.permutation()功能属于组合发电机。用于简化组合结构(例如排列,组合和笛卡尔积)的递归生成器称为组合迭代器。

如单词“Permutation”所理解的,它指的是可以对集合或字符串进行排序或排列的所有可能的组合。同样在这里itertool.permutations()方法为我们提供了迭代器可能存在的所有可能的安排,并且所有元素均根据该位置而不是根据其值或类别被假定为唯一。所有这些排列都是按字典顺序提供的。功能itertool.permutations()接受一个迭代器和“ r”(需要排列的长度)作为输入,并假设“ r”作为迭代器的默认长度(如果未提及),并分别返回所有可能的长度为“ r”的排列。

用法:

Permutations(iterator, r)
from itertools import  permutations
#permutations(a,3)
print (permutations(a,3))
print (type(permutations(a,3)))

输出结果:


二、实例说明

(一)对字符串进行permutations排列组合

from itertools import  permutations
a = 'abc'   #对字符串进行permutations排列组合
for i in permutations(a,3):
    x = ''.join(i)
    print (x,end=' ')
print ('\n------------------------------------')

输出结果:

 (二)对元组进行permutations排列组合

c = ('e','f','g')  #对元组进行permutations排列组合
for j in permutations(c,2):
    print (j)
print ('------------------------------')

输出结果:

 (三)对列表进行permutations排列组合

b = [1,2,3] #对列表进行permutations排列组合
for j in permutations(b,3):
    print (''.join('%d'%o for o in j))
print ('-----------------------------------------------------')

输出结果:

(四)对字典进行permutations排列组合

e = {'青鸟':'最美','萧风':'最帅'}  #对字典进行permutations排列组合
for i in permutations(e,2):
    print (''.join('%s'%s for s in i)) #字典只对键进行排列组合
print ('-----------------------------------------------------')

 输出结果:

 注:字典只对键进行排列组合!

### 使用 `itertools.permutations` 生成排列 在 Python 中,可以利用标准库中的 `itertools.permutations` 来方便地生成给定序列的所有可能排列。该函数返回的是一个迭代器,可以通过循环来遍历所有排列情况。 对于想要获取特定长度的排列,可以在调用时指定第二个参数 r 表明每次选取元素的数量;如果不给出这个参数,默认会使用整个输入序列进行全排列[^2]。 下面是一个简单的例子展示如何打印列表 `['a', 'b', 'c']` 所有成员的不同顺序: ```python import itertools elements = ['a', 'b', 'c'] permutations_result = itertools.permutations(elements) for p in permutations_result: print(p) ``` 这段代码将会输出由 `'a'`, `'b'`, 和 `'c'` 组成的各种不同的元组形式的结果,每种都是这三个字符的一种独特排序方式[^3]。 当处理更复杂的情况或是希望看到具体位置上的变化而非整体移动时,还可以通过设置额外参数来自定义排列行为。例如只关心两两之间的交换而不考虑全部重新安排的情形下就可以这样写: ```python from itertools import permutations data = ['A', 'B', 'C'] result = permutations(data, 2) # 这里指定了r=2意味着我们只需要看两位的变化 for item in result: print(item) ``` 上述脚本仅显示从原始集合选出两个元素所能形成的每一项新组合[^4]。 值得注意的一点是在面对非常庞大的数据集时,由于计算量巨大可能导致性能问题甚至程序崩溃。因此,在实际应用中应当谨慎评估所需资源并采取适当措施优化效率或限制范围[^5]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaochuhe--kaishui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值