使用数字索引调用特定排列



我使用itertools.permutations函数创建一个列表中所有字符组合的列表,然后将结果连接在一起,如下所示:

from itertools import permutations
def iterate(it):
for x in it:
print("".join(list(x)))
k_c = "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM. "
iterate(permutations(list(k_c),10))

这就是它所产生的:

>>>1234567890
123456789q
123456789w
123456789e
123456789r
123456789t
123456789y
123456789u
123456789i
123456789o
...

我的问题是这样的;我需要创建像这样的100个字符长的字符串,例如:1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDJ1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDJ,程序将暂停,因为运行iterate(permutations(list(k_c),100))需要太长时间。我想知道程序是否可以只返回一个特定的字符串,如:

permutation_string(k_c,100,87)
>>> 1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDJ1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDJ

它将返回列表中的第87个值。我意识到这似乎是一个奇怪的问题,但任何帮助都将不胜感激。感谢

如果你正在寻找给定字符串/列表的第i个排列,那么这个答案会起作用:https://stackoverflow.com/a/46132585/8189212

最新更新