Как строковое форматирование переменной? - PullRequest
0 голосов
/ 09 мая 2020

Вот мой сценарий:

# I have 100 variables
x0 = 3.14
x1 = 2.72
x2 = 1.41
x3 = 2.33
.... (omit this part)
x100 = 7.77

# xi corresponds to the value that the index i of a list needs to subtract, 
# now I want to loop through the list
for i in range(100):
    lst[i] -= 'x{}'.format(i)

Это явно не сработает, поскольку переменная не является строкой. Итак, как мне форматировать строку для переменной?

Ответы [ 3 ]

2 голосов
/ 09 мая 2020

Вы можете получить доступ к этим переменным, используя locals:

lst[i] -= locals()['x{}'.format(i)]
2 голосов
/ 09 мая 2020

Чтобы получить значение переменной, вы можете использовать Python s eval функцию

eval('x{}'.format(i))

И, пожалуйста, никогда не вызывайте свой список переменных списка .

Изменить: Хотя это решение работает в этом случае, рекомендуется по возможности избегать eval, потому что он позволяет вводить код таким образом, которого вы не ожидаете.

1 голос
/ 09 мая 2020

Вместо этого вы должны использовать здесь list.

x = [...] (где x имеет len 100)

Тогда для вашего l oop:

for i in range(100):
    lst[i] -= x[i]

(переименовано list в lst, чтобы избежать конфликта имени со встроенным типом)

...