python文本排序检索,在python中查找给定字符串的所有可能排列

小编典典

itertools模块具有一个称为permutations()的有用方法。该文件说:

itertools.permutations(iterable [,r])

返回迭代器中元素的连续r长度排列。

如果未指定r或为None,则r默认为可迭代的长度,并生成所有可能的全长置换。

排列以字典顺序排序。因此,如果对输入的iterable进行排序,则将按排序顺序生成置换元组。

不过,你必须将排列的字母作为字符串加入。

>>> from itertools import permutations

>>> perms = [''.join(p) for p in permutations('stack')]

>>> perms

[“堆栈”,“ stakc”,“ stcak”,“ stcka”,“ stkac”,“ stkca”,“ satck”,“ satkc”,“ sactk”,“ sackt”,“ saktc”,“ sakct”,“ sctak”,“ sctka”,“ scatk”,“ scakt”,“ sckta”,“ sckat”,“ sktac”,“ sktca”,“ skatc”,“ skact”,“ skcta”,“ skcat”,“ tsack” ,“ tsakc”,“ tscak”,“ tscka”,“ tskac”,“ tskca”,“ tasck”,“ taskc”,“ tacsk”,“ tacks”,“ taksc”,“ takcs”,“ tcsak”,“ tcska”,“ tcask”,“ tcaks”,“ tcksa”,“ tckas”,“ tksac”,“ tksca”,“ tkasc”,“ tkacs”,“ tkcsa”,“ tkcas”,“ astck”,“astkc”,“ asctk”,“ asckt”,“ asktc”,“ askct”,“ atsck”,“ atskc”,“ atcsk”,“ atcks”,“ atksc”,“ atkcs”,“ acstk”,“ acskt” ,“ actsk”,“ actks”,“ ackst”,“ ackts”,“ akstc”,“ aksct”,“ aktsc”,“ aktcs”,“ akcst”,“ akcts”,“ cstak”,“ cstka”,“ csatk”,“ csakt”,“ cskta”,“ cskat”,“ ctsak”,“ ctska”,“ ctask”,“ ctaks”,“ ctksa”,“ ctkas”,“ castk”,“ caskt”,“ catsk” ,“ catks”,“ cakst”,“ cakts”,“ cksta”,“ cksat”,“ cktsa”,“ cktas”,“ ckast”,“ ckats”,“ kstac”,“ kstca”,“ ksatc”,'ksact','kscta','kscat','ktsac','ktsca','ktasc','ktacs','ktcsa','ktcas','kastc','kasct','katsc','katcs ','kacst','kacts','kcsta','kcsat','kctsa','kctas','kcast','kcats']

如果你发现自己受到重复的困扰,请尝试将数据拟合到没有重复的结构中,例如set:

>>> perms = [''.join(p) for p in permutations('stacks')]

>>> len(perms)

720

>>> len(set(perms))

360

2020-02-22

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值