gpt4 book ai didi

python - 找到组合的更快方法?

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:37 25 4
gpt4 key购买 nike

我试图找到 np.linspace(0,n,n*10+1) 之间所有可能的子区间其中子区间大于宽度(比如宽度=0.5)

所以我通过使用 itertools 尝试了这个

import itertools
ranges=np.linspace(0,n,n*10+1)
#find all combinations
combinations=list(itertools.combinations(ranges,2))
#using for-loops to calculate width of each intervals
#and append to new list if the width is greater than 0.5
save=[]
for i in range(len(combinations)):
if combinations[i][1]-combinations[i][0]>0.5:
save.append(combinations[i])

但这需要太多次,尤其是当 n 变大时,尤其是它会消耗大量 ram

所以我想知道是否可以在收集组合时更快地修改函数或设置约束

最佳答案

itertools.combinations(...) 返回一个生成器,这意味着返回的对象会在需要时生成其值,而不是一次计算所有内容并将结果存储在内存中。您通过将其转换为列表来强制立即计算和存储,但这是不必要的。简单地遍历 combinations 对象,而不是制作它的列表并遍历索引(无论如何都不应该这样做):

import itertools
ranges=np.linspace(0,n,n*10+1) # alternatively 'range(100)' or so to test
combinations=itertools.combinations(ranges,2)
save=[]

for c in combinations:
if c[1] - c[0] > 0.5:
save.append(c)

关于python - 找到组合的更快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36787513/

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