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

如何通过循环拼接字符串与整数调用对应规则命名的多个变量

问题原因

你拼接得到的'acc1'/'acc2'只是普通字符串,Python不会自动将字符串和同名变量做绑定,你直接操作这个字符串只会得到字符串本身的执行结果,比如原代码里something[0]取的是字符串的首个字符'a',和你预先定义的acc1/acc2列表没有关联。

推荐解决方案(最优实践)

不要拆成多个acc+数字的独立变量,直接用嵌套列表或字典存储所有同规则的数据,从根源上避免动态取变量的需求:

用字典存储(更直观,键对应你的数字后缀)

# 键为原变量的数字后缀,值为对应的列表内容
acc_map = {
    1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    2: ["John", "Doe", "Example", "code"]
}
c = [1, 2]

for i in c:
    something = acc_map[i]
    print(something[0])

用嵌套列表存储(适合后缀是连续数字的场景)

# 下标对应原数字后缀(注意列表默认从0开始,需要和后缀对齐的话可以在0位补个占位值)
acc = [
    [], # 占位用,对应不存在的acc0
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    ["John", "Doe", "Example", "code"]
]
c = [1, 2]

for i in c:
    something = acc[i]
    print(something[0])

这种方案维护成本最低,不会出现作用域冲突问题,是所有开发场景下的首选方案。

临时兼容解决方案

如果你已经写了大量accN变量不想重构,可以用Python内置的globals()(取全局作用域变量)或locals()(取当前局部作用域变量)函数,通过字符串键名取对应的变量值:

acc1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
acc2 = ["John", "Doe", "Example", "code"]
c = [1, 2]

for i in c:
    var_name = 'acc' + str(i)
    # 全局作用域下用globals(),函数内部的局部变量替换为locals()
    something = globals()[var_name]
    print(something[0])

注意该方案只适合临时调试用,正式项目不推荐使用,后续变量增多后极易出现变量名冲突、作用域判断错误等问题,排查成本极高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:08