将字符串输入随机化为所有可能性

时间:2014-01-27 16:44:11

标签: python python-2.7

我需要帮助制作一个使用args获取字符串的程序,并将其随机化为每种可能性。然后程序的结果将保存到用户执行程序时提供的文本文件中。

1 个答案:

答案 0 :(得分:2)

如果您需要以随机顺序所有可能的排列,那么我建议构建然后随机播放列表:

from itertools import permutations
from random import shuffle

def shuffled_permutations(s):
    perms = list(permutations(s)) # create all permutations
    shuffle(perms) # shuffle the list randomly
    return ["".join(p) for p in perms] # rebuild strings and return

应用此功能:

>>> shuffled_permutations("ABC")
['BCA', 'CBA', 'BAC', 'ABC', 'ACB', 'CAB']

如果你不是真的需要随机顺序排列(即你只想知道它们是什么),那么直接使用permutations会更有效率,例如

for p in permutations(s):

注意,对于字符串len(s) == n,所有排列的长度为n!(例如n == 5(5 * 4 * 3 * 2 * 1) == 120);这变得非常快(例如,我的用户名有3,628,800个排列)。