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

Python新手求助:如何将列表值与字符串列表绑定为计算变量

问题

我是Python新手,遇到了一些问题。我有一个包含不同条目的Excel表格,目标是读取每个条目并自动将其分配给对应的名称。目前这是简化版表格,后续可能添加更多值,因此不想逐个处理每个值。

截至目前我已完成以下代码:

import pandas as pd
import numpy as np

df = pd.read_excel('koef.xlsx')
data_array = np.array(df)

XCoeff = []
YCoeff = []
NCoeff = []
VarName = []

for i in range(len(data_array)):
    XCoeff.append(data_array[i][1])
XCoeff.pop(0)

for i in range(len(data_array)):
    YCoeff.append(data_array[i][2])
YCoeff.pop(0)

for i in range(len(data_array)):
    NCoeff.append(data_array[i][3])
NCoeff.pop(0)

for i in range(len(data_array)):
    VarName.append(data_array[i][0])
VarName.pop(0)

s1 = "X"
s2 = "Y"
s3 = "N"

XName = [s1 + x for x in VarName]
YName = [s2 + x for x in VarName]
NName = [s3 + x for x in VarName]

最终我需要生成X、Y、N三类变量列表,例如X类的首个条目为:Xdel = 0.00,Xdel2 = 4.44,Xdel3 = -2.06等,这些变量将用于后续计算。

Excel表格内容如下:

Motion      X     Y     N
0    zero   0.00     0  0.00
1     del   0.00  4.44 -2.06
2    del2  -2.09 -0.24  0.16
3    del3   0.00 -2.95  1.38
4       u  -2.20     0  0.00
5      uu   1.50     X  0.00
6     uuu   0.00     0  0.00
7    udot  -1.47     0  0.00
8       v   0.11 -24.1 -7.94
9      vv   2.74  2.23 -1.15
10    vvv   0.00 -74.7  2.79
11   vdot   0.00 -16.4 -0.47
12      r  -0.07  4.24 -3.32
13     rr   0.58  0.56 -0.27
14    rrr   0.00  2.58 -1.25
15   rdot   0.00 -0.46 -0.75
16     vr  13.10     0  0.00
17    vrr   0.00 -40.3  8.08
18    vvr   0.00  -9.9 -3.37
19   udel   0.00 -4.56  2.32
20  vdel2   0.00  5.15 -1.17
21  vvdel   0.00   7.4 -3.41
22  rdel2   0.00 -0.51 -0.58
23  rrdel   0.00 -0.98  0.43

目前我已成功生成所需列表,但不知如何将列表值与对应字符串名称合并为可用变量,希望能得到帮助。

解决方案

不建议直接创建大量独立变量(比如Xdel、Xdel2),后续表格扩展时会导致代码难以维护。更推荐用字典来存储这些键值对,既方便扩展,也便于后续计算调用。

优化后的代码

import pandas as pd

# 读取Excel表格
df = pd.read_excel('koef.xlsx')

# 初始化三个字典,分别存储X、Y、N类的变量
x_vars = {}
y_vars = {}
n_vars = {}

# 遍历表格每一行,生成对应键值对
for _, row in df.iterrows():
    motion = row['Motion']
    # 生成变量名并绑定对应值到字典
    x_vars[f"X{motion}"] = row['X']
    y_vars[f"Y{motion}"] = row['Y']
    n_vars[f"N{motion}"] = row['N']

使用示例

如果要调用Xdel的值,直接用x_vars['Xdel'];调用Ydel2就用y_vars['Ydel2'],和独立变量的使用逻辑一致,但扩展性更强——后续表格新增行时,代码不需要任何修改就能自动生成对应的键值对。

为什么不推荐独立变量?

如果硬要创建独立变量,可以用globals()或locals()动态添加,但这种方式会让代码变得混乱,变量名容易冲突,后续排查问题和维护难度极大,完全不符合你“不想逐个处理”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:20:43