例如,如果一个案件看起来像这样:
distance_11 = 5
distance_12 = 3
distance_13 = 2
if distance_* == 3:
distance_* = [1,2,3]
我知道代码显然是不正确的,但是我试图显示我正在尝试做的事情。搜索具有相似名称的一组变量,然后如果满足该条件,则将其分配给指定的数组。我知道我可以为每个特定变量写一个elif条件,但是在实际使用情况下,会有更多变量。任何形式的帮助将不胜感激-谢谢。
答案 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]