Чтобы встроить имя списка, естественным способом было бы использовать словарь :
l0 = [35.467, 1785387, 9984670, 0.913]
l1 = [63.951, 2833687, 640679, 0.888]
l2 = [80.940, 3874437, 357114, 0.916]
l3 = [60.665, 2167744, 301336, 0.873]
l4 = [127.061, 4602367, 377930, 0.891]
l5 = [64.511, 2950039, 242495, 0.907]
l6 = [318.523, 17348075, 9525067, 0.915]
d = {}
for i in range(7):
d['l{:d}'.format(i)] = eval('l{:d}'.format(i))
, тогда результат будет
In [2]: d
Out[2]:
{'l0': [35.467, 1785387, 9984670, 0.913],
'l1': [63.951, 2833687, 640679, 0.888],
'l2': [80.94, 3874437, 357114, 0.916],
'l3': [60.665, 2167744, 301336, 0.873],
'l4': [127.061, 4602367, 377930, 0.891],
'l5': [64.511, 2950039, 242495, 0.907],
'l6': [318.523, 17348075, 9525067, 0.915]}
Короче со словарем понимание:
d = {'l{:d}'.format(i): eval('l{:d}'.format(i)) for i in range(7)}
и даже короче с f-строкой (python> = 3.6):
d = {f'l{i}': eval(f'l{i}') for i in range(7)}
Если вы хотите создать numpy ndarray без сохранения названия списка:
import numpy as np
array2d = np.array([eval('l{}'.format(i)) for i in range(7)])
, тогда результат будет
In [4]: array2d
Out[4]:
array([[3.5467000e+01, 1.7853870e+06, 9.9846700e+06, 9.1300000e-01],
[6.3951000e+01, 2.8336870e+06, 6.4067900e+05, 8.8800000e-01],
[8.0940000e+01, 3.8744370e+06, 3.5711400e+05, 9.1600000e-01],
[6.0665000e+01, 2.1677440e+06, 3.0133600e+05, 8.7300000e-01],
[1.2706100e+02, 4.6023670e+06, 3.7793000e+05, 8.9100000e-01],
[6.4511000e+01, 2.9500390e+06, 2.4249500e+05, 9.0700000e-01],
[3.1852300e+02, 1.7348075e+07, 9.5250670e+06, 9.1500000e-01]])
, где array2d[i,:]
- список i
-й список.
И более короткий путь с f-строкой (python> = 3.6):
array2d = np.array([eval(f'l{i}') for i in range(7)])