gpt4 book ai didi

python - 构建 1 到 n 的四元组所有可能组合的最有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 21:21:08 24 4
gpt4 key购买 nike

这个想法是创建 [a,b,c,d][e,f,g,h] 的所有可能组合,其中 a,b,c,d,e,f,g,h 是范围不同的整数从 1 到 n。顺序并不重要,所以如果我有 [a,b,c,d],我就不想要 [c,b,d,a]。同样适用于 [e,f,g,h]。

我有下面的代码,它可以工作,但有一个缺点:a) 非常慢,b) 占用大量内存(我目前正在尝试 n=30 并使用 13+ GB 的内存。)

def build(n):
a = []
b = []
for i in range(1,n):
for j in [x for x in range(1,n) if x!= i]:
for k in [y for y in range(1,n) if (y!= i and y !=j)]:
for l in [z for z in range(1,n) if (z!= i and z!=j and z !=k)]:
if sorted([i,j,k,l]) not in a:
a.append(sorted([i,j,k,l]))



b = a

c = [i for i in product(a,b) if list(set(i[0]).intersection(i[1])) == []]
print 'INFO: done building (total: %d sets)'%len(c)
return c

是否有更有效的方法来实现我想要的目标?

最佳答案

我突然想起来了,所以这里可能有一些错误的语法。不过,应该足以让您了解如何自己正确地解决问题:

import itertools

def quads(n, required_results=None):
arr1, arr2 = range(1,n+1), range(1,n+1)
results = set() # only admits unique combinations
for combination in itertools.product(arr1, arr2):
results.add(combination)
if required_results and required_results = len(results):
# if the second argument is passed, no need to go through the whole combination-space
break
return results

关于python - 构建 1 到 n 的四元组所有可能组合的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54239759/

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