Python实现交替合并两列表的函数,调用后为何返回None?
为什么合并结果输出为None
- 最直接的原因:你的
merge函数根本没有写返回语句。Python 中所有没有显式return的函数,执行完内部逻辑后默认返回None,所以把merge(a,b)的返回值赋值给result时,拿到的自然就是None。 - 就算补上返回逻辑,现有代码的拼接逻辑也不对:当前循环是按a列表的长度做遍历边界(只覆盖0到3共4个索引),拼接完成后,b列表最后多出的元素
11会被直接漏掉,根本进不了最终结果;如果之后遇到a比b长的场景,取b[i]时还会因为索引越界直接报错。
修正方案
需要调整两处逻辑:
- 函数最后把拼接完成的
mergedList显式return出去 - 循环边界取两个列表的长度最大值,遍历过程中先判断当前索引是否在对应列表的有效范围内,再追加元素,就能兼容两个列表长度不一致的场景
修正后的完整可运行代码:
def merge(a,b): mergedList =[] max_len = max(len(a), len(b)) for i in range(max_len): if i < len(a): mergedList.append(a[i]) if i < len(b): mergedList.append(b[i]) # 显式返回拼接结果 return mergedList def main(): a = [1,4,9,16] b = [9,7,4,9,11] print("List a is", a) print("List b is", b) result = merge(a,b) print("The merged list is", result) main()
运行修正后的代码,即可得到预期的合并结果[1, 9, 4, 7, 9, 4, 16, 9, 11]。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

