为何两段含if条件的For Loop代码执行逻辑不同:一段仅运行一次,一段遍历全列表
两段含if条件的For Loop代码执行逻辑差异解析
需求:从单词列表中找出第一个长度超过10的单词并返回,若不存在则返回空字符串。以下两段代码表现不同,核心原因在于return语句的位置:
第一段代码(仅运行一次循环)
def get_word_over_10_char(list_of_words): for word in list_of_words: if len(word) > 10: return word else: return ""
这段代码的问题是**else分支内直接执行return**:
- 循环启动后,只会检查列表的第一个元素。如果第一个元素长度不大于10(比如测试列表里的
soup),会立刻触发else分支,返回空字符串并终止整个函数,循环直接结束,根本不会去检查后续元素。
第二段代码(遍历所有元素)
def get_word_over_10_char(list_of_words): for word in list_of_words: if len(word) > 10: return word return ''
这段代码的逻辑符合需求:
- 循环会逐个遍历列表元素,只有当找到长度超过10的单词时,才会通过
return终止函数并返回该单词。 - 如果遍历完整个列表都没找到符合条件的元素,才会执行循环外的
return '',返回空字符串。
结合测试列表word_list = ['soup', 'parameter', 'intuition', 'house-maker', 'fabrication']来看:
- 第一段代码检查第一个元素
soup后就返回空,完全不会处理后面的fabrication; - 第二段代码会依次检查每个元素,直到找到
fabrication并返回它。
内容的提问来源于stack exchange,提问作者user20602484
相关产品推荐
相关产品推荐

