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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言正则表达式

    C语言正则表达式POSIX规定了正则表达式的C语言库函数,详见regex(3)。我们已经学习了很多C语言库函数的用法,读者应该具备自己看懂man手册的能力了。本章介绍了正则表达式在grep、sed、awk中的用法,学习要能够举一反三,请读者根据regex(3)自己总结正则表达式在C语言中的用法,写一些简单的程序,例如验证用户输入的IP地址或email地址格式是否正确。C语言处理正则表达式常用的函数有…

    2022年7月15日
    20
  • mysql executereader_C# 操作MySQL数据库, ExecuteReader()方法参数化执行T-SQL语句, 游标读取数据…

    mysql executereader_C# 操作MySQL数据库, ExecuteReader()方法参数化执行T-SQL语句, 游标读取数据…C#操作MySQL数据库需要引用”MySql.Data”,可通过两种方式获取。1、从NuGet下载”Install-PackageMySql.Data-Version6.8.7″推荐使用方式一,从NuGet上直接获取所需dll,方便快捷。C#操作MySQL数据库,ExecuteReader()方法参数化执行T-SQL语句,游标读取数据–ExecuteNonQuery()对连接执…

    2022年6月20日
    29
  • allure生成的报告怎么查看_allure测试报告

    allure生成的报告怎么查看_allure测试报告原因可能由于:因为pytest-allure-adaptor库基本被python3放弃了,运行很不友好,所以报错解决方法:terminal中先卸载:pipuninstallpytest-allure-adaptor再安装:pipallure-pytest若安装找不到该模块可以去设置那下载…

    2026年1月29日
    6
  • 01.HashMap源码学习整理思维导图

    01.HashMap源码学习整理思维导图

    2021年7月13日
    74
  • java treetable_在Swing中创建TreeTable | 学步园

    java treetable_在Swing中创建TreeTable | 学步园TreeTable是Tree和Table的一个结合-就是一个即能够展开和收起行,同时也能够显示多个列的组件。在Swing的标准包里没有一个叫做JtreeTable的组件,但是我们很容易通过把Jtree做成Jtable的渲染器来创建一个这样的组件。这篇文章就是关于如何使用该技术来创建一个TreeTable。最后实现一个名为TreeTableExample0的例子程序,该例子实现了一个TreeTabl…

    2022年6月4日
    54
  • es5简单总结

    es5简单总结建议张鑫旭原文内容导读 1 简介 2 浏览器支持 3 ES5 的严格模式 4 JSON5 添加对象 6 额外的数组 7 Function prototype bind8 补充参考简介 ECMAScript5 1 或仅 ES5 是 ECMAScript 基于 JavaScript 的规范 标准最新修正 与 HTML5 规范进程本质类似 ES5 通过对现有 JavaScript 方法添加语

    2025年12月3日
    5

发表回复

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

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