有没有一种方法可以在Python中为条件引用多个变量?

时间:2020-04-16 22:19:28

标签: python if-statement conditional-statements

例如,如果一个案件看起来像这样:

distance_11 = 5
distance_12 = 3
distance_13 = 2

if distance_* == 3:
    distance_* = [1,2,3] 

我知道代码显然是不正确的,但是我试图显示我正在尝试做的事情。搜索具有相似名称的一组变量,然后如果满足该条件,则将其分配给指定的数组。我知道我可以为每个特定变量写一个elif条件,但是在实际使用情况下,会有更多变量。任何形式的帮助将不胜感激-谢谢。

4 个答案:

答案 0 :(得分:3)

您应该像这样在列表或数组中添加距离:

distances = [5, 3, 2]

for (i, val) in enumerate(distances):
    if val == 3:
        distances[i] = [1, 2, 3]

答案 1 :(得分:0)

我认为您正在寻找这样的解决方案。

distance_11 = 5
distance_12 = 3
distance_13 = 2
dists = [distance_11, distance_12, distance_13]

for i in range(len(dists)):
    if dists[i] == 3:
        dists[i] = [1, 2, 3]

答案 2 :(得分:0)

您绝对应该将数组用作@Eric M mentioned。 但是,如果您不能更改变量名,则可以使用Python的globals内置函数。

from fnmatch import filter    

distance_11 = 5
distance_12 = 3
distance_13 = 2

for var_name in filter(globals().keys(), 'distance_*'):
    if globals()[var_name] == 3:
        globals()[var_name] = [1, 2, 3]

如果distance_*变量不是全局变量,请同时查看locals() built-in

答案 3 :(得分:-1)

您可以使用vars来实现

distance_11 = 5
distance_12 = 3
distance_13 = 2

for i in range(11, 14):
    varName = f'distance_{i}'
    if vars()[varName] == 3:
        vars()[varName] = [1,2,3]