python循环速度提高_提高python中for循环的速度

python循环速度提高_提高python中for循环的速度我正在计算从 1 到 10 7 的数字的分区数 我用五边形数定理来实现 它提供了一种计算 n 的划分数的方法 我们称之为 P n P n 1 P n 2 P n 5 P n 7 所以 P n 依赖于不同的 P n x 其中 x 从 1 到 n 总之 长话短说 我使用两个循环 一个从 1 到 10 7 另一个使用 x 的定义 并根据特定的公式计算 正如您可以想象的 代码执行得相当慢 有什么方法可以提高这些 for 循环的速

我正在计算从1到10^7的数字的分区数。我用五边形数定理来实现,它提供了一种计算n的划分数的方法,我们称之为P(n)=P(n-1)+P(n-2)-P(n-5)-P(n-7)+。。。

所以P(n)依赖于不同的P(n-x),其中x从1到n。总之,长话短说,我使用两个循环,一个从1到10^7,另一个使用x的定义,并根据特定的公式计算。正如您可以想象的,代码执行得相当慢。有什么方法可以提高这些for循环的速度吗?在

另外,我尝试过使用numpy数组,但我对它们并不太满意,不幸的是,它使代码变得更慢。在def build_list(new_limit, k):

list_of_p_minus = list()

while k < new_limit:

list_of_p_minus.append(k*(2*k-1))

list_of_p_minus.append(k*(2*k+1))

k = k+1

return list_of_p_minus

def counter(low, high):

current = low

while current <= high:

yield current

current += 1

def loop_through_numbers(limit, list_of_p_minus):

p_dict = dict()

p_dict[0] = 1

p_dict[1] = 1

aux = 2

aux_index = 1

for number in counter(2, limit+1):

if aux == number:

if aux_index % 4 == 1 or aux_index % 4 == 2:

p_dict[number] = -1

else:

p_dict[number] = 1

aux = aux + (aux_index + 1) * 2

aux_index += 1

else:

p_dict[number] = 0

for element in counter(0, len(list_of_p_minus)):

if element % 4 == 0 or element % 4 == 1:

try:

p_dict[number] += p_dict[number-list_of_p_minus[element]]

except KeyError:

break

else:

try:

p_dict[number] -= p_dict[number-list_of_p_minus[element]]

except KeyError:

break

return

如您所见,我尝试实现迭代器,虽然这使代码运行得更快,但仍然需要大量的时间。在这一点上,任何想法都是非常受欢迎的。。。在

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232183.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PHP Fatal error: Uncaught Error: Call to undefined function posix_getpid()「建议收藏」

    PHP Fatal error: Uncaught Error: Call to undefined function posix_getpid()

    2022年2月12日
    44
  • interface gigabitethernet1/0/1_onboard ethernet controller

    interface gigabitethernet1/0/1_onboard ethernet controllerinterfaceEthernet0/0/0 1. x/y/z表示:第x台设备、第y板卡、第z端口,其中z是可以在同设备、同板卡上重复出现的,但分别对应Fastethernet(百兆端口)和Gibgaitethernet(千兆端口)。2.这种表现形式只在命令行中出现,具体设备商一般只能表示z,因为x表示的是第几台级联设备,y则表示设备商插的第几块板卡。如果你面对的只是一台设备,则x永…

    2025年8月2日
    4
  • BosonNLP情感词典 评论情感分析[通俗易懂]

    BosonNLP情感词典 评论情感分析[通俗易懂]fromsnownlpimportSnowNLPimportpandasaspdfromcollectionsimportdefaultdictimportosimportreimportjiebaimportcodecs”’#读取评论内容的.txt文件txt=open(‘C:/Users/24224/Desktop/1.txt’,encoding=’utf-8′)text=txt.readlines()print(text)#确认读取文件成功,

    2022年8月23日
    7
  • MySQL增删改查_sql where case when

    MySQL增删改查_sql where case whensqlserver数据库中raiserror函数的用法server数据库中raiserror的作用就和asp.NET中的thrownewException一样,用于抛出一个异常或错误。这个错误可以被程序捕捉到。raiserror的常用格式如下:raiserror(‘错误的描述’,错误的严重级别代码,错误的标识,错误的描述中的参数的值(这个可以是多个),一些其它参数),在官方上的格式描述如下:…

    2025年6月17日
    3
  • 使用Pycharm运行TensorFlow,Virtualenv安装TensorFlow「建议收藏」

    使用Pycharm运行TensorFlow,Virtualenv安装TensorFlow「建议收藏」使用Pycharm运行TensorFlow,Virtualenv安装TensorFlow@(MachineLearningwithPython)系统:MacOS10.13本篇关注的是两个问题:通过virtualenv创建虚拟环境,并在此环境下安装TensorFlow在Pycharm下配置解释器,在Pycharm下运行训练代码Virtualenv+TensorflowTensorFl

    2022年8月26日
    6
  • 排列与组合的一些定理教案_平行轴定理推导

    排列与组合的一些定理教案_平行轴定理推导一,加法原理与乘法原理加法原理与乘法原理是排列与组合的基础。加法原理本质上是分类,乘法原理本质上是分步。分类,就是把一个集合(某事物)分成互不相交的若干独立的部分。比如,概率论中的全概率公式就将事

    2022年8月6日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号