从python中的函数调用中断特定索引的循环执行,然后继续

时间:2018-03-24 16:55:26

标签: function for-loop python-2.6

我的问题如下:

lst=[1,2,3,4,5]
lst_pass=[1,2,5]
count=0
flag=0
print "flag1"
print type(flag)


def fn1(lst_fn,j):
    if lst_fn[j] in lst_pass:
        print("pass")
        pass
    #if fail do not perform whatever is below fn call instead append index of for loop and check for next element

    else:
        flag=1
        return flag


print("code_prior")

for i in range(len(lst)):
    print lst[i]

    flag=fn1(lst,i)

    if flag!=1:
        print("code_after ")
        print lst[i] 

    flag=0

1)如果通过然后只执行fn调用后的任何内容2)在这种情况下1,2通过因此code_after应该打印为3)j = 3 code_after不应该打印,因为3 isn&#39在那里lst_pass;相反for循环应该执行4 4)4也不在lst_pass中所以code_after不应该打印,而是循环应该在lst_pass中执行5 5)5所以理想情况下code_after应该打印三次

上面的代码使用原始标记方法可以正常工作,但是我必须执行的代码很大,之后会调用很多fns。是否有一种优雅的方式来做同样的事情?我正在使用python 2.6。提前谢谢。

2 个答案:

答案 0 :(得分:0)

我从你的代码中可以理解的是你试图遍历lst并检查它是否在lst_pass中然后打印出来。

只需将您的代码修改为:

print("code_prior")
for i in range(len(lst)):
  if lst[i] in lst_pass:
    print("code_after ")
    print lst[i] 

无需为此逻辑声明单独的函数。

答案 1 :(得分:0)

你可以试试这个:

"code before"

flag = fn1 (lst,i)

if flag==1: 
    continue

"code after"