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)
上一篇 2025年10月27日 下午4:01
下一篇 2025年10月27日 下午4:22


相关推荐

  • vb.net listview_不VB思考VB数据表

    vb.net listview_不VB思考VB数据表控件:TEXTBOX   :1个     Name:txtJobNoBUTTON:    2个      Name:btnFilter,btnShowAllLISTVIEW: 1个      Name:lstvwJobNo Columns:JobNo,ContainerID,CartonID,PO,Style,Color,Size,ShipMent,Factory        

    2026年4月16日
    7
  • 设计模式学习之访问者模式

    设计模式学习之访问者模式访问者模式 是行为型设计模式之一 访问者模式是一种将数据操作与数据结构分离的设计模式 它可以算是 23 中设计模式中最复杂的一个 但它的使用频率并不是很高 大多数情况下 你并不需要使用访问者模式 但是当你一旦需要使用它时 那你就是需要使用它了 访问者模式的基本想法是 软件系统中拥有一个由许多对象构成的 比较稳定的对象结构 这些对象的类都拥有一个 accept 方法用来接受访问者对象的访问 访问者是

    2026年3月19日
    1
  • UNet详解(附图文和代码实现)

    卷积神经网络被大规模的应用在分类任务中,输出的结果是整个图像的类标签。但是UNet是像素级分类,输出的则是每个像素点的类别,且不同类别的像素会显示不同颜色,UNet常常用在生物医学图像上,而该任务中图片数据往往较少。所以,Ciresan等人训练了一个卷积神经网络,用滑动窗口提供像素的周围区域(patch)作为输入来预测每个像素的类标签。这个网络有两个优点:(1)输出结果可以定位出目标类别的位置;(2)由于输入的训练数据是patches,这样就相当于进行了数据增强,从而解决了生物医学图像数量少的问题。但是,

    2022年4月4日
    227
  • es painless 排序_elasticsearch-painless-操作日期[通俗易懂]

    小编典典解决方案是使用.value{“script_fields”:{“new_date_field”:{“script”:{“inline”:”doc[‘date_field’].value+14400″}}}}但是,我实际上想将其用于重新索引,但格式略有不同。这是我在_reindexapi中操纵时间的版本POST_reindex{“source”:{“index”:”som…

    2022年4月17日
    210
  • [算法]-最短路径算法总结「建议收藏」

    [算法]-最短路径算法总结「建议收藏」Dijkstra最短路径算法按路径长度的递增次序,逐步产生最短路径的贪心算法基本思想:首先求出长度最短的一条最短路径,再参照它求出长度次短的一条最短路径,依次类推,直到从顶点v到其它各顶点的最短路径全部求出为止。时间复杂度为O(n2)算法流程:首先选定源点1,建立邻接矩阵C[5][5],初始化三个数组分别为D[n],P[n],S[n],分别用来存储从源点到对应点的最短距离和最短路…

    2022年5月26日
    42
  • Java学习之多线程篇

    0x00前言在一个工具开发中,如果该工具需要不断的去执行同一个动作或者是请求的话,使用单线程是非常慢。还是拿一个目录扫描器来举例子,比如我们需要开发一个目录扫描器,我们的字典里有10000个字典,

    2021年12月12日
    46

发表回复

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

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