Python根据条件选择变量

问题描述 投票:0回答:4

我想知道是否可以根据特定条件/输入来选择变量。

例如:

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

该代码将给出一个错误,当然没有定义day_i。我知道我可以将所有变量添加到列表中并通过列表位置等访问它们,但是我正在使用一个相当大的Simpy环境,如果有的话,这将非常有用。

谢谢!

python variables naming assign simpy
4个回答
0
投票

您可以将值存储在列表中,并使用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]

0
投票

如评论中所述,有几种解决方案:

您可以定义一个字典:

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
投票

下面的代码将打印出变量day_2的值

i =2
selected_variable = 'day_{}'.format(str(i))
exec("print(%s)" % selected_variable)

0
投票

您可以使用vars()来获得示波器中的所有变量。

用于示例:

day_1 = 5
day_2 = 10
day_3 = 15
i = 2
selected_variable = vars()[f"day_{i}"]
© www.soinside.com 2019 - 2024. All rights reserved.