Python嵌套循环仅返回首个匹配字符的问题咨询
问题根因
你没有理解错Python的循环运行机制,问题出在return语句的缩进位置错误:
当前return letters_in_common被放在了内层if判断的代码块中,只要第一次匹配到相同字符(也就是hello的第一个字符h和loha中的h匹配成功),就会立刻执行return终止整个函数,外层和内层的后续循环都不会继续执行,所以只会返回['h']。
你觉得JS同类循环可以执行完所有迭代,大概率是你之前写JS代码时,把return放在了所有循环结束后的位置,而非匹配逻辑内部。
修正方案
把return语句调整到和外层for循环同级的位置,等所有循环迭代执行完毕再返回结果即可,修正后的代码如下:
def common_letters(string_one,string_two): letters_in_common = [] for letter in string_one: for letter2 in string_two: if letter == letter2: letters_in_common.append(letter) # 匹配到后跳出内层循环,避免第二个字符串存在重复字符时重复追加 break # 所有循环执行完成后再返回结果 return letters_in_common returned = common_letters("hello", "loha") print(returned)
运行上述代码输出结果为['h', 'l', 'l'],符合你的预期。
内容的提问来源于stack exchange,提问作者Zack Amin
相关产品推荐
相关产品推荐

