有没有办法在1个elif块的(false)评估和Python 3.x中的下一个评估之间执行语句? 我希望通过仅运行函数" word_in_special_list"来优化我的程序。如果if块的前2个语句评估为false。 理想情况下,程序看起来像这样:
for word in lis:
#Finds word in list
if word_in_first_list(word):
score += 1
elif word_in_second_list(word):
score -= 1
#Since the first 2 evaluations return false, the following statement is now run
a, b = word_in_special_list(word)
#This returns a Boolean value, and an associated score if it's in the special list
#It is executed only if the word isn't in the other 2 lists,
#and executed before the next elif
elif a:
score += b #Add b to the running score
else:
...other things...
#end if
#end for
当然,在elif评估中放置一个元组会返回错误。我也无法重构我的if语句,因为该单词更可能位于第一个或第二个列表中,因此这种结构可以节省时间。那么有没有办法在2个elif评估之间运行代码块?
答案 0 :(得分:9)
你必须制作一个else
案例,然后在
for word in lis:
if word_in_first_list(word):
score += 1
elif word_in_second_list(word):
score -= 1
else:
a, b = word_in_special_list(word)
if a:
score += b #Add b to the running score
else:
...other things...
答案 1 :(得分:0)
您可以输入continue
语句。
for word in lis:
#Finds word in list
if word_in_first_list(word):
score += 1
continue
if word_in_second_list(word):
score -= 1
continue
a, b = word_in_special_list(word)
if a:
score += b #Add b to the running score
else:
...other things...
我认为这会影响您尝试实现的效果。顺便说一句,我不明白为什么你需要函数word_in_first_list
。 if word in first_list
有什么问题?