我的问题如下:
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。提前谢谢。
答案 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"