【发布时间】:2018-05-18 07:48:33
【问题描述】:
我正在使用以下代码。
for x in range(100):
print('inside 1st loop')
for y in range(25,60):
print('inside second loop')
if y >= x:
print ('y is now greater than x')
是否有可能一旦内部for循环中的if条件满足,在运行5个以上内部循环后,外部循环会自行中断。
实际代码如下:
for i in range(len(a1)):
title_derived = []
print(i)
for j in range(len(b1)):
#print(b1.iloc[i][10], a1.iloc[j][3])
if b1.iloc[j][10] == a1.iloc[i][3]:
print('1st if ' + str(j))
print (b1.iloc[j][1], a1.iloc[i][11], b1.iloc[j][5])
if (((pd.to_datetime(b1.iloc[j][1]) <= pd.to_datetime(a1.iloc[i][11]) <= pd.to_datetime(b1.iloc[j][5]))) or ((pd.to_datetime(b1.iloc[j][1]) <= pd.to_datetime(a1.iloc[i][8]) <= pd.to_datetime(b1.iloc[j][5])))) :
print('2nd if' + str(j))
title_derived.append(b1.iloc[j][15])
print('inserted ' + b1.iloc[j][15] + ' in ' + str(i) + ' th record ')
a1.iat[i,65] = title_derived
现在,我有两个数据框,第一个中的每条记录(大约 10000 条记录)查找其他数据框中的每条记录(40000 条记录)。有时最多可以有 4-5 个符合条件的连续条目。
所以,一旦在第二个循环中满足条件,我想再完成五次迭代并打破它。
【问题讨论】:
-
将代码放入函数中,并从内部循环中
return。 -
最佳方案取决于您的实际代码,因此您提供给我们的示例代码越真实越好。现在它是微不足道的。
-
@AlexHall 实际代码非常适合我的情况。如果有帮助,让我尝试添加它。
-
你不能从内循环中断开外循环,因为
break-command 将始终反映它嵌套的最内循环。对于for-loops,这种行为是非常有意的,因为当您知道迭代的范围并且它是固定的时,应该(仅)使用 for 循环。否则建议使用 while 循环。