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

如何通过动态拼接变量名调用对应列表并取值?

动态调用Keno中奖列表的正确实现方式

你写的Table + number[index]这种写法完全不可行,Python不支持直接通过字符串拼接的方式动态引用变量名,这样写会触发语法错误——Table本身未定义,+运算符也无法完成变量名与数字的拼接来生成新变量。

下面是两种可行的实现方式,优先推荐第一种:

1. 字典映射(最推荐)

把所有对应选号数量的列表存入字典,用选号数量作为键,列表作为值,通过键直接获取对应列表:

number = 1
index = 4
# 用字典统一管理所有Table
tables = {
    1: [0, 1, 2, 3, 4, 5],
    2: [0, 10, 20, 30, 40, 50]
}
# 动态获取对应列表并按索引取值
result = tables[number][index]
print(result)  # 输出4

适配你的Keno场景时,可以把不同spot的中奖列表按同样方式管理:

# 假设已定义各spot的中奖列表
c_spot3_WinList = [...]
c_spot5_WinList = [...]

# 用字典映射选号数量与对应中奖列表
win_lists = {
    3: c_spot3_WinList,
    5: c_spot5_WinList,
    # 新增其他spot直接在这里添加即可
}

# 用户选号数量示例
user_spot = 3
# 获取对应中奖列表
current_win_list = win_lists[user_spot]
# 后续中奖判断逻辑

这种方式逻辑清晰、代码易维护,是Python处理动态变量映射的标准方案。

2. 利用全局/局部命名空间(不推荐)

如果一定要通过变量名拼接实现,可以借助globals()或locals()函数获取命名空间字典,通过拼接后的字符串作为键取值:

number = 1
index = 4
Table1 = [0, 1, 2, 3, 4, 5]
Table2 = [0, 10, 20, 30, 40, 50]
# 拼接变量名字符串,从全局命名空间中获取对应变量
target_table = globals()[f"Table{number}"]
result = target_table[index]
print(result)  # 输出4

这种方式虽然能实现需求,但依赖全局变量,代码可读性差,且容易因变量名拼写错误、变量被意外覆盖等引发难以排查的bug,不建议在正式项目中使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:31:08