Python выбор переменных на основе условия - PullRequest
0 голосов
/ 24 марта 2020

Мне интересно, можно ли выбрать переменную на основе определенного условия / ввода.

Например:

day_1 = 5
day_2 = 10
day_3 = 15
i =2
selected_variable = day_i

Код выдаст ошибку, что, конечно, day_i не определено. Я знаю, что могу добавить все переменные в список и получить к ним доступ через местоположения списков и т.д. c, но я работаю с довольно большой средой Simpy, в которой это было бы очень полезно, если бы она существовала.

Спасибо!

Ответы [ 4 ]

0 голосов
/ 24 марта 2020

Приведенный ниже код выведет значение переменной day_2

i =2
selected_variable = 'day_{}'.format(str(i))
exec("print(%s)" % selected_variable)
0 голосов
/ 24 марта 2020

Как уже упоминалось в комментариях, есть пара решений:

Вы можете определить dict:

day = {
"day_1": 5,
"day_2": = 10,
"day_3": = 15
}

selected_variable = day[f"day_{i}"]

Массив

day = [
5,
10,
15
]

selected_variable = day[i] 

Оператор If

day_1 = 5
day_2 = 10
day_3 = 15

if i == 1:
    selected_variable = day_1
elif i == 2:
    selected_variable = day_2
elif i == 3:
    selected_variable = day_3

Или locals (или vars) диктант (мой любимый в данном случае)

day_1 = 5
day_2 = 10
day_3 = 15

selected_variable = locals()[f"day_{i}"]
0 голосов
/ 24 марта 2020

Вы можете использовать vars(), чтобы получить все пригодные для обработки в объеме.

, например:

day_1 = 5
day_2 = 10
day_3 = 15
i = 2
selected_variable = vars()[f"day_{i}"]
0 голосов
/ 24 марта 2020

Вы можете сохранить значения в списке и использовать i в качестве индекса для доступа к одному блоку, вы делаете i-1, поскольку список проиндексирован с 0

days = [5, 10, 15]
i = 2
selected_variable = days[i - 1]

Вы также можете связать ключ / значение в словаре, а из числа получить значение

days = {
    1: 5, 2: 10, 3: 15
}
i = 2
selected_variable = days[i]
...