我想知道是否可以根据特定条件/输入来选择变量。
例如:
day_1 = 5
day_2 = 10
day_3 = 15
i =2
selected_variable = day_i
该代码将给出一个错误,当然没有定义day_i。我知道我可以将所有变量添加到列表中并通过列表位置等访问它们,但是我正在使用一个相当大的Simpy环境,如果有的话,这将非常有用。
谢谢!
您可以将值存储在列表中,并使用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]
如评论中所述,有几种解决方案:
您可以定义一个字典:
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}"]
下面的代码将打印出变量day_2
的值
i =2
selected_variable = 'day_{}'.format(str(i))
exec("print(%s)" % selected_variable)
您可以使用vars()
来获得示波器中的所有变量。
用于示例:
day_1 = 5
day_2 = 10
day_3 = 15
i = 2
selected_variable = vars()[f"day_{i}"]