问题描述
我需要帮助制作一个使用 args 获取字符串并将其随机化为各种可能性的程序.然后,程序的结果将保存到用户在执行程序时提供的文本文件中.
如果您需要以随机顺序所有可能的排列,那么我建议先构建然后重新排列列表:
from itertools 导入排列从随机导入随机播放def shuffled_permutations(s):perms = list(permutations(s)) # 创建所有排列shuffle(perms) # 随机打乱列表return ["".join(p) for p in perms] # 重建字符串并返回
应用此功能:
>>>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 个排列).
I need help making a program that takes a string using args and randomizes it into every possibility. The program's results would then be saved into a text file provided by the user when executing the program.
If you need all of the possible permutations in a random order, then I would suggest building then shuffling a list:
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
Applying this function:
>>> shuffled_permutations("ABC")
['BCA', 'CBA', 'BAC', 'ABC', 'ACB', 'CAB']
If you don't really need the permutations in a random order (i.e. you just want to know what they all are), it is much more efficient to use permutations
directly, e.g.
for p in permutations(s):
Note that, for a string len(s) == n
, the length of all permutations is n!
(e.g. for n == 5
, (5 * 4 * 3 * 2 * 1) == 120
); this gets long pretty fast (there are 3,628,800 permutations of my user name, for example).
这篇关于将字符串输入随机化为所有可能性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!