如何停止在Python中的列表上迭代的嵌套循环

我正在尝试基于两个范围和一个列表来构建“人口”列表。即使我指定了要中断的位置,我创建的嵌套循环也不会停止(我已经检查了循环中使用的列表的长度,该长度等于303)。因此输出是无限的:在打印v = 2,J = 100(最大需求)的总体值后,返回显示v = 0,J = 0的总体值。我该如何解决?这是代码:

from scipy.optimize import minimize_scalar
import math
import itertools

we=268.64
wexe=0.814
weye=-0.0017
Be=0.0568325
ae=0.0001969
ge=-0.00000047
De=1.02E-8
kb=1.38065E-23

energy_groundJ=[]
def energyJ (v,J):
    E = we*(v+0.5) + wexe*(v+0.5)**2 + weye*(v+0.5)**3 + Be*(J*(J+1)) - ae*(v+0.5)*(J*(J+1)) - De*(J*(J+1)) + ge*(J*(J+1))*(v+0.5)**2
    E_J=E*1.986E-23
    return E_J
for v in [0,1,2]:
    for J in range(0,101):
        E_J=energyJ(v,J)
        energy_groundJ.append(E_J) 

Population=[]
def population_ground():
    P=(2*J+1)*math.exp(-i/(kb*295))
    return P
for i in energy_groundJ:
    for v in [0,2]:
        for J in range(0,101):
            if i==303:
                break
            P=population_ground()
            Population.append(P)
            print("population at v = "+str(v)+" and J ="+str(J)+"  = "+str(P))
wuyangsunyu 回答:如何停止在Python中的列表上迭代的嵌套循环

break仅使您跳出一个“ for”循环(堆栈中最接近的一个/顶部),而不是多个循环。
由于您的其他循环在检查之前不执行任何操作,因此可以执行以下操作:

for i in energy_groundJ:
    if i==303:
        break
    for v in [0,1,2]:
        for J in range(0,101):
            P=population_ground()
            Population.append(P)
            print("population at v = "+str(v)+" and J ="+str(J)+"  = "+str(P))
本文链接:https://www.f2er.com/3157665.html

大家都在问