You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现交替合并两列表的函数,调用后为何返回None?

为什么合并结果输出为None
  • 最直接的原因:你的merge函数根本没有写返回语句。Python 中所有没有显式return的函数,执行完内部逻辑后默认返回None,所以把merge(a,b)的返回值赋值给result时,拿到的自然就是None。
  • 就算补上返回逻辑,现有代码的拼接逻辑也不对:当前循环是按a列表的长度做遍历边界(只覆盖0到3共4个索引),拼接完成后,b列表最后多出的元素11会被直接漏掉,根本进不了最终结果;如果之后遇到a比b长的场景,取b[i]时还会因为索引越界直接报错。

修正方案

需要调整两处逻辑:

  1. 函数最后把拼接完成的mergedList显式return出去
  2. 循环边界取两个列表的长度最大值,遍历过程中先判断当前索引是否在对应列表的有效范围内,再追加元素,就能兼容两个列表长度不一致的场景

修正后的完整可运行代码:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 21:36:04