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

Python实现两个序列求交集返回空列表的问题排查

你的交集函数返回空列表的原因及修复方案

嘿,我一眼就揪出问题所在啦!你的代码里return res的缩进位置完全错了——它现在被放在for循环的每次迭代流程里,而不是等整个循环跑完之后才返回结果。

咱们来捋一遍执行过程:当你调用intersect([1,2,3,4,5],[3,4,5,6,7])时,第一次循环取到x=1,这个元素不在s2里,紧接着就执行了return res,此时res还是个空列表,函数直接结束了!后面的2、3、4、5根本没机会被检查到,自然返回空啦。

修复后的代码

只需要把return res的缩进往后退一格,放到for循环外面就行:

def intersect(s1,s2): 
    res=[] 
    for x in s1: 
        if x in s2: 
            res.append(x) 
    return res  # 移到循环外面,等所有元素检查完再返回

现在再调用intersect([1,2,3,4,5],[3,4,5,6,7]),就能得到正确的交集结果[3,4,5]了。

额外小优化(处理大序列更高效)

如果你的序列长度比较大,把s2转换成集合能大幅提升成员查询的速度(集合的in操作是O(1)复杂度,列表是O(n)),优化后的代码如下:

def intersect(s1,s2): 
    s2_set = set(s2)
    res = [] 
    for x in s1: 
        if x in s2_set: 
            res.append(x) 
    return res 

内容的提问来源于stack exchange,提问作者Fernando Callao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:11:42