【问题标题】:python: shuffle characters in string to get all possible string combinations [duplicate]python:随机播放字符串中的字符以获取所有可能的字符串组合[重复]
【发布时间】:2011-05-26 15:25:15
【问题描述】:

只是在 Python 中寻找一个脚本,它接收一些字符串并返回由原始字符串中所有可能的字符组合组成的所有可能的字符串...

我找到了随机打乱字符串中字符的脚本,但它们只返回一个随机组合,而我正在寻找的是所有可能的组合......

比如说:

script.py "abc"
abc
acb
bac
bca
cab
cba

谢谢!

【问题讨论】:

    标签: python string combinations


    【解决方案1】:

    itertools.permutations

    >>> import itertools
    >>> import pprint
    >>> pprint.pprint(list(itertools.permutations("spam")))
    [('s', 'p', 'a', 'm'),
     ('s', 'p', 'm', 'a'),
     ('s', 'a', 'p', 'm'),
     ('s', 'a', 'm', 'p'),
     ('s', 'm', 'p', 'a'),
     ('s', 'm', 'a', 'p'),
     ('p', 's', 'a', 'm'),
     ('p', 's', 'm', 'a'),
     ('p', 'a', 's', 'm'),
     ('p', 'a', 'm', 's'),
     ('p', 'm', 's', 'a'),
     ('p', 'm', 'a', 's'),
     ('a', 's', 'p', 'm'),
     ('a', 's', 'm', 'p'),
     ('a', 'p', 's', 'm'),
     ('a', 'p', 'm', 's'),
     ('a', 'm', 's', 'p'),
     ('a', 'm', 'p', 's'),
     ('m', 's', 'p', 'a'),
     ('m', 's', 'a', 'p'),
     ('m', 'p', 's', 'a'),
     ('m', 'p', 'a', 's'),
     ('m', 'a', 's', 'p'),
     ('m', 'a', 'p', 's')]
    

    pprint 只是为了使输出看起来更整洁。)或者,如果您愿意,

    >>> list(map("".join, itertools.permutations("spam")))
    ['spam', 'spma', 'sapm', 'samp', 'smpa', 'smap', 'psam', 'psma', 'pasm', 'pams', 'pmsa', 'pmas', 'aspm', 'asmp', 'apsm', 'apms', 'amsp', 'amps', 'mspa', 'msap', 'mpsa', 'mpas', 'masp', 'maps']
    

    【讨论】:

    • 谢谢!正是我想要的!
    【解决方案2】:

    itertools.permutations 会这样做。

    >>> import itertools
    >>> for s in itertools.permutations('banana'):
    ...     print ''.join(s)
    ... 
    banana
    banaan
    bannaa
    bannaa
    # many, many more...
    

    【讨论】:

      猜你喜欢
      • 2017-11-11
      • 1970-01-01
      • 2015-05-06
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      相关资源
      最近更新 更多