.<,`~|€ 这基本上是我键盘上所有字符的列表。-6ren">
gpt4 book ai didi

algorithm - python : all possible words (permutations) of fixed length in mini-alphabet

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:57 24 4
gpt4 key购买 nike

假设我有这样一个字符串:

abcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()-_+={}[]\:;"'?/>.<,`~|€

这基本上是我键盘上所有字符的列表。我怎样才能得到所有可能的组合,比方说,由这些字符中的 8 个组成的“单词”?我知道会有数百万种可能性。

干杯!

最佳答案

排列组合的区别

您正在寻找排列或组合。

'abc''bac' 是不同的排列,但它们是相同的组合 {a,b,c}

'abc'的排列:'', 'a', 'b', 'c', 'ab', 'ba', 'ac', 'ca', ' bc', 'cb', 'abc', 'acb', 'bac' , 'bca', 'cab', 'cba'

“abc”的组合:{}{'a'}{'b'}{' c'}, {'a','b'}, {'b','c'}, {'a', 'c'}, {'a','b','c'}


在 python 中

使用 from itertools import *(因为那里的函数确实应该在默认命名空间中),或者如果您愿意,可以使用 import itertools

如果您关心排列:

permutations(yourString, 8)

如果您关心组合:

combinations(yourString, 8)

其他语言

在其他语言中,有简单的递归或迭代算法来生成这些。请参阅维基百科或计算器。例如http://en.wikipedia.org/wiki/Permutation#Systematic_generation_of_all_permutations


重要提示

请注意排列数为 N!,因此例如您的字符串将具有

  • (69 选择 8) = 80 亿 combinations 长度为 8,因此...
  • (69 选择 8) * 8! ~= 3.37 × 10^14 排列 长度为 8。

如果您存储每个排列,您将耗尽内存。即使您不这样做(因为您正在减少它们),它也需要很长时间才能运行,在现代计算机上可能需要 1-10 天。

关于algorithm - python : all possible words (permutations) of fixed length in mini-alphabet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6551282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com