如何使用for循环实现列表元素查找且仅单次输出匹配结果
问题原因
原代码的逻辑是每遍历一个列表元素就执行一次判断并打印对应内容,因此哪怕第一个元素已经匹配成功,后续不匹配的元素依然会触发No的打印,最终输出多次结果。
你提供的原代码还存在一处笔误:调用check函数时传入的'One缺少右侧单引号,运行会直接触发语法报错。
可行实现方案
要求保留for循环的前提下,有两种常用实现方式:
方案1:匹配成功后直接return终止函数
list1 = ['One', 'two', 'three'] def check(list1, inp): for i in list1: if i == inp: print("Exist!") # 匹配到后直接结束函数,终止后续遍历逻辑 return # 所有元素遍历完成仍未触发return,说明元素不存在 print("No") check(list1, 'One')
运行后将仅输出一次Exist!,如果传入不存在的元素则仅输出一次No。
方案2:使用Python for...else语法
Python的for循环支持else分支,仅当循环完整遍历所有元素、没有被break提前终止时,才会执行else块中的逻辑:
list1 = ['One', 'two', 'three'] def check(list1, inp): for i in list1: if i == inp: print("Exist!") break else: print("No") check(list1, 'One')
该实现和方案1效果完全一致。
内容的提问来源于stack exchange,提问作者Henri
相关产品推荐
相关产品推荐

