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

在不同作用域引用同一列表:字典存列表的替代方案咨询

共享列表引用的替代实现方案

给你几个不用字典包裹,也能让不同函数修改同一列表引用的方法:

1. 直接传递列表作为参数

列表本身就是可变对象,直接把列表传给函数,修改列表内的元素会直接作用于原列表,完全不需要字典包装:

a = [1, 2, 3]

def func(lst: list):
    lst[1] = 3

def func2(lst: list):
    lst[0] = 3
    func(lst)

func2(a)

执行结果:

>>> a
[3, 3, 3]

2. 用类封装列表(适合复杂场景)

如果需要管理的共享状态不止这一个列表,或者想把操作逻辑封装起来,可以用类来包裹列表:

class SharedList:
    def __init__(self, data):
        self.lst = data

def func(obj: SharedList):
    obj.lst[1] = 3

def func2(obj: SharedList):
    obj.lst[0] = 3
    func(obj)

a = SharedList([1, 2, 3])
func2(a)

执行结果:

>>> a.lst
[3, 3, 3]

这种方式能更清晰地组织代码,后续还能给类添加专门的方法来操作列表,扩展性更强。

3. 使用全局变量(不推荐,仅适用于小脚本)

把列表设为全局变量,函数内用global关键字声明后直接修改,虽然能实现需求,但会让代码耦合度变高,不利于维护:

a = [1, 2, 3]

def func():
    global a
    a[1] = 3

def func2():
    global a
    a[0] = 3
    func()

func2()

执行结果:

>>> a
[3, 3, 3]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:55:13