【发布时间】:2014-01-27 16:44:11
【问题描述】:
我需要帮助制作一个使用 args 获取字符串并将其随机化为各种可能性的程序。然后程序的结果将保存到用户在执行程序时提供的文本文件中。
【问题讨论】:
-
除非你的字符串很短,否则可能会有太多的可能性,无法一一列出来。
标签: python python-2.7
我需要帮助制作一个使用 args 获取字符串并将其随机化为各种可能性的程序。然后程序的结果将保存到用户在执行程序时提供的文本文件中。
【问题讨论】:
标签: python python-2.7
如果您需要所有以随机顺序排列的所有可能排列,那么我建议您先构建一个列表,然后再改组:
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 种排列)。
【讨论】:
permutations!但是,如果 OP 不需要 shuffle 这就是要走的路。