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

Python中如何通过拼接整数与字符串调用目标变量?含矩阵元素访问场景

动态访问变量/矩阵的解决方案

嘿,你遇到的这两个问题本质上是同一个——想通过字符串拼接出来的名字直接访问变量对吧?这在Python里是个常见误区,直接生成变量名字符串是拿不到对应变量值的,最规范也最安全的解决方式是用字典,下面我分别给你拆解两个场景的处理方法:

一、基础变量场景:动态获取变量值

你原来的代码里,'P%s'%(int(i))只是生成了字符串"P2",它和变量P2完全是两回事,自然打印不出34。

推荐方案:用字典存储变量

把你的变量放进字典里,用字符串形式的变量名做键,这样就能通过拼接出来的字符串去取值了:

i = 2
# 用字典统一管理你的变量
var_store = {'P2': 34}
# 用f-string拼接键名,直接从字典取值
M = var_store[f'P{i}']
print(M)  # 输出34
print(var_store['P2'])  # 输出34

备选方案(不推荐):用globals()/locals()

如果你实在不想改现有变量的存储方式,可以通过globals()(全局变量字典)或者locals()(局部变量字典)来取值,但这种方式风险很高——比如不小心覆盖全局变量、代码可读性差,所以尽量不用:

i = 2
P2 = 34
M = globals()[f'P{i}']
print(M)  # 输出34

二、矩阵访问场景:遍历动态命名的矩阵

没错!你猜的很对,这还是因为没用到字典导致的问题。原来的代码里M是字符串"P0"(注意你循环里p从0开始,但你的矩阵是P1-P3,这里还会有索引不匹配的问题),字符串当然不能用M[i,j]去访问元素。

推荐方案:用字典存储矩阵

把所有矩阵放进字典,遍历的时候通过拼接的键名取出对应矩阵,再访问元素:

# 先定义好你的三个矩阵(这里用列表模拟,numpy矩阵同理)
P1 = [[1,2,3],[4,5,6],[7,8,9]]
P2 = [[10,11,12],[13,14,15],[16,17,18]]
P3 = [[19,20,21],[22,23,24],[25,26,27]]

# 把矩阵存入字典,键是矩阵的名字字符串
matrix_store = {'P1': P1, 'P2': P2, 'P3': P3}

# 注意循环要从1到3,对应P1-P3
for p in range(1, 4):
    current_matrix = matrix_store[f'P{p}']
    for i in range(3):
        for j in range(3):
            # 如果是列表矩阵用[i][j],numpy矩阵可以用[i,j]
            print(current_matrix[i][j])

这样就能顺利遍历每个矩阵的所有元素啦~

总结

Python不推荐直接通过字符串去引用变量名,用字典来统一管理这类需要动态访问的变量/矩阵,不仅代码可读性更强,还能避免变量名冲突、误操作全局变量等潜在问题,是这类场景的最佳实践。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 15:07:45