Python如何根据变量n获取顺序命名列表的指定值
实现方案
以下是两种常用实现方式,优先推荐第二种结构化存储的方案:
方案1:从全局命名空间动态读取(仅作参考,不推荐生产使用)
如果你的列表都是在全局作用域下定义的,可以通过globals()内置函数直接读取对应变量名的对象:
# 示例列表定义 list1 = [1, 2, 3] list2 = [4, 5, 6] list3 = [7, 8, 9] n = 3 # 取值逻辑:Python序列索引从0开始,第二个元素对应下标1 print(globals()[f'list{n}'][1])
当n=3时上述代码会输出8,即list3的第二个值。
注意:该方法强依赖变量作用域,代码可维护性差,容易触发变量不存在的报错,仅适合临时测试场景使用。
方案2:预存入容器中(生产环境推荐)
更稳妥的方式是提前把所有有序列表存入统一容器,通过索引直接取值,不需要动态拼接变量名:
- 用列表存储(适合n从1连续递增的场景)
list1 = [1, 2, 3] list2 = [4, 5, 6] list3 = [7, 8, 9] # 下标0位留空,让容器索引和n的取值直接对应 list_container = [None, list1, list2, list3] n = 3 print(list_container[n][1])
- 用字典存储(适合n不连续的场景)
list_container = { 1: [1, 2, 3], 2: [4, 5, 6], 3: [7, 8, 9] } n = 3 print(list_container[n][1])
该方式逻辑清晰,不会出现变量名拼写错误、作用域不匹配的问题,也方便后续扩展维护。
内容的提问来源于stack exchange,提问作者stocton12
相关产品推荐
相关产品推荐

