我需要帮助制作一个使用args获取字符串的程序,并将其随机化为每种可能性。然后程序的结果将保存到用户执行程序时提供的文本文件中。
答案 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个排列)。