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

Python自定义列表追加函数异常:指定列表却依次追加至两个列表

问题分析与解决办法

嘿,我来帮你捋捋这个问题~你遇到的问题根源出在判断列表的方式上,咱们一步步拆解:

为什么原来的代码不符合预期?

你用了==来判断传入的z是a还是b,但==在Python里是比较两个对象的内容是否相等,而不是判断它们是不是同一个内存对象。

一开始a和b都是空列表,a == b的结果是True——因为空列表的内容完全一致。这时候哪怕你调用func(b, 5),第一个条件z == a也会成立,程序就会往a里追加值,而不是你期望的b。

怎么修改?

我们需要用is关键字来判断,它的作用是检查两个变量是否指向内存中的同一个对象,这才是你真正需要的判断逻辑。修改后的代码如下:

a = [] 
b = [] 
def func(z,x): 
    if z is a: 
        a.append(x) 
    elif z is b: 
        b.append(x) 
    print(a,b) 

现在你调用func(a, 10),z和a是同一个对象,会往a里加值;调用func(b, 20),z和b是同一个对象,会往b里加值,结果就完全符合预期啦。

更简洁的写法(推荐)

其实还有个更灵活的写法,根本不用判断到底是哪个列表——因为你传入的z本身就是目标列表的引用,直接对z执行append操作就行:

a = [] 
b = [] 
def func(z,x): 
    z.append(x) 
    print(a,b) 

这个写法的好处是,以后你再加更多列表(比如c = []),完全不用修改函数,直接调用func(c, 30)就能往c里追加值,扩展性更强~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:45:40