【问题标题】:python permutation time limit exceeded超出python排列时间限制
【发布时间】:2020-02-10 07:40:25
【问题描述】:

我有一个号码n,它的最大值直到1_000_000

我必须用 li=range(0,n) 创建一个列表并找到 2 个项目的排列

我正在使用此代码

from itertools import permutations 
perm = permutations(li,2)
for i in list(perm): 
    print(i)  

此代码适用于 n 的小值

但如果它的数量很大,我会收到超出时间限制的错误

如何在不使用外部库的情况下解决这些超时错误

【问题讨论】:

  • 你的最终目标是什么?排列是为了解决我 bliv 的问题,那么问题是什么?说明它可能有助于提供一种更好的排列方式
  • 您的程序正在尝试打印n!/(n-2)! 排列。对于您的n = 1000_000,这是 9.99999 × 10¹¹ ≈ 2⁴⁰。虽然这在计算上并非不可行,但非常不切实际。
  • Python 本身不会抛出这样的错误,但可能是一些编码挑战网站。您的程序究竟有哪些限制?你到底想做什么?

标签: python-3.x list permutation


【解决方案1】:

不要强制列出您的 perm 变量,只需在 for 循环中使用您的 perm

for i in perm: 
    print(i)

小心:您的程序将需要很长时间,因为您有 999999000000 行要打印

不强制列出您的变量perm 的原因是不要将所有排列都保存在内存中(您可能会内存不足或需要很长时间)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多