Home > database >  Changing variables in the loop
Changing variables in the loop

Time:02-25

Is it possible to run such part of code in for cycle, please? How to change variables on the left?

A = np.loadtxt('f1.txt', unpack=True)
B = np.loadtxt('f2.txt', unpack=True)
C = np.loadtxt('f3.txt', unpack=True)
D = np.loadtxt('f4.txt', unpack=True)

I tried this, but it is not the right usage of eval function, right?

p = ['A', 'B', 'C', 'D']

#eval(p[0]) = np.loadtxt('f1.txt', unpack=True)

CodePudding user response:

You can't assign to a variable using eval. You can, however, assign using the locals() dictionary -

locals()['a'] = np.loadtxt('f1.txt')

However, even that approach is dangerous as you are modifying the symbol table directly. The docs say:

Note The contents of this dictionary should not be modified; changes may not affect the values of local and free variables used by the interpreter.

You could try doing something like -

p = []
for i in range(1, 5):
    p.append(np.loadtxt(f'f{i}.txt')

#unpack subsequently
a, b, c, d = p
  • Related