【问题标题】:How long does it takes to check all possibilities?检查所有可能性需要多长时间?
【发布时间】:2012-12-29 15:11:43
【问题描述】:

我想做一个python程序来运行python中的一个字符串:

a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

为该字符串找到所有可能的 16 字符组合是否需要很长时间?

有没有python明智的方法来做到这一点?

【问题讨论】:

  • 36^16 = 7958661109946400884391936 种可能的组合。即使每秒迭代 10^12 次,也需要超过 250000 年。
  • 您的实际问题是什么?你想用这些组合做什么?
  • @ThiefMaster,没有:C(36,16) = 36! / (16!* 20!) = 7307872110.
  • @larsmans:对我来说,他似乎在尝试暴力破解某些东西。所以很可能允许重复。
  • @l4mpi 这是一个项目,我的最后一个问题已关闭,是我的第一篇文章,不知道如何发帖。但是你可以在那里查看详细信息:My First Post

标签: python


【解决方案1】:

您可以尝试使用来自itertoolscombinations

例子:

>>> import itertools
>>> [x  for x in itertools.combinations("ABC", 2)]
[('A', 'B'), ('A', 'C'), ('B', 'C')]

【讨论】:

  • OP 想要组合,而不是排列。
  • @Jonatan 感谢您的帮助!,我想有很多方法,但这就是我想要的。有什么方法可以在检查它们时打印它们?因为如果我运行 `itertools.combinatios('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', 16);除了检查所有可能的组合之外,我不会在我的一生中看到任何东西?
  • @Jose_Sunstrider,combinations 函数是一个生成器,因此您应该能够选择任意数量的组合(例如使用 for 循环)。不过,我用列表理解编写它的方式会挑选出它们。
  • @Jonatan 正是我想要的。谢谢!
猜你喜欢
  • 2017-03-31
  • 2014-05-07
  • 2012-07-28
  • 2017-09-05
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
相关资源
最近更新 更多