为什么Python中for循环只返回首个元素,列表推导式却返回全部元素?
两段代码执行结果差异的核心原因
- 第一段代码问题出在
return的放置位置:return被写在了for循环内部,循环第一次迭代处理完('A','a')这组元素后,就会直接执行return返回仅包含'A-a'的列表,函数直接终止运行,不会进入后续遍历('B','b')的迭代步骤,最终自然只能得到单个元素的结果。
如果要修改第一段代码实现预期效果,需要先声明一个空列表存储所有拼接结果,循环内每次将拼接好的字符串追加到列表中,等循环完全执行结束后再返回这个列表,修改后示例:def concatenate(L1,L2,connector): result = [] for word1,word2 in zip(L1,L2): result.append(word1+connector+word2) return result - 第二段代码使用的是Python列表推导式语法,它的底层逻辑就是遍历
zip(L1,L2)产出的所有元素对,把每一次的拼接结果都收集到新列表中,等所有元素遍历完成后才会返回完整的列表,所以能得到你期望的['A-a', 'B-b']结果。
内容的提问来源于stack exchange,提问作者Pynoobie
相关产品推荐
相关产品推荐

