在Python中有没有一种方法可以引用多个条件变量?
例如,如果一个案例看起来像这样:在Python中有没有一种方法可以引用多个条件变量?,python,if-statement,conditional-statements,Python,If Statement,Conditional Statements,例如,如果一个案例看起来像这样: distance_11 = 5 distance_12 = 3 distance_13 = 2 if distance_* == 3: distance_* = [1,2,3] distances = [5, 3, 2] for (i, val) in enumerate(distances): if val == 3: distances[i] = [1, 2, 3] 我知道代码显然是不正确的,但我正在尝试显示我正在尝
distance_11 = 5
distance_12 = 3
distance_13 = 2
if distance_* == 3:
distance_* = [1,2,3]
distances = [5, 3, 2]
for (i, val) in enumerate(distances):
if val == 3:
distances[i] = [1, 2, 3]
我知道代码显然是不正确的,但我正在尝试显示我正在尝试做的事情。搜索一组具有相似名称的变量,如果其中一个满足该条件,则将其分配给指定的数组。我知道我可以为每个特定变量编写一个elif条件,但是在实际的用例中有更多的变量。任何形式的帮助都将不胜感激-谢谢。您应该将距离列成如下列表或数组:
distance_11 = 5
distance_12 = 3
distance_13 = 2
if distance_* == 3:
distance_* = [1,2,3]
distances = [5, 3, 2]
for (i, val) in enumerate(distances):
if val == 3:
distances[i] = [1, 2, 3]
您可以使用
vars
来实现这一点
距离_11=5
距离_12=3
距离_13=2
对于范围(11,14)内的i:
varName=f'distance_{i}'
如果vars()[varName]==3:
vars()[varName]=[1,2,3]
我想您正在寻找这样的解决方案
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]
您肯定应该将数组用作。 但是如果不能更改变量名,可以使用Python的
globals
builtin
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.*
变量不是全局变量,还可以查看distance
为什么不是数组?或者(更好的)python中的set
“Array”=>列表