繁体   English   中英

在 for 循环中追加多个列表 | Python

[英]Append multiple lists in a for loop | Python

N1_0 = []
M1_0 = []

N1_1 = []
M1_1 = []

N1_2 = []
M1_2 = []

N1_4 = []
M1_4 = []

N1_6 = []
M1_6 = []

X = [0,1,2,4,6]

for M in np.arange(0,1,0.2):
    M2.append(float(M))
    N2.append(N(float(M)))

for x in X:
    for i in np.arange(0,5,1):
        N1_x.append(N2[i]/math.sqrt(x+1))

在第二个 for 循环中,我想为 x 的值附加 N1_x。 我的意思是当 x=0 时,应该附加 N1_0 列表,当 x=1 时应该附加 Nx_1 列表,依此类推。 我试过这种方式,但它给出了一个错误,我假设变量在 python 中不能以这种方式工作。 我该怎么办? 任何帮助深表感谢。

尝试使用eval() ,这是示例。

eval('x = 5')只是声明了一个值为 5 的变量x ,这意味着 Python 会将eval()的字符串作为 Python 命令执行。

然后,这是解决方案。 {}将替换为x的值,然后整行将作为 python 命令执行。

for x in X:
    for i in np.arange(0,5,1):
        eval('N1_{}.append(N2[i]/math.sqrt(x+1))'.format(x))

组织数据的便捷方式是通过字典。

您可以首先将其初始化为一个空字典:

N1 = {}

然后,无论您当前正在访问何处,例如N1_1您都可以使用N1[1]

由于您在内部循环中对N1_x访问有问题(这不起作用),您只需将其更改为使用N1[x]

        N1[x].append(N2[i]/math.sqrt(x+1))

另一个优点是您的初始化,例如:

N1_0 = []
N1_1 = []
...

尽管您可以将它们类似地硬编码为:

N1[0] = []
N1[1] = []
...

实际上,您可以在x的外部循环中使用单个语句来执行这些操作:

for x in X:
    N1[x] = []

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM