在Python中连接变量名
我需要检查如下所示的变量:在Python中连接变量名,python,concatenation,Python,Concatenation,我需要检查如下所示的变量: if name1 != "": (do something) for i in range(10): if "name" + str(i) != "": (do something) print(form.name1.data) print(form.name2.data) print(form.name3.data) etc. 其中,“name”后面的数字在1和10之间递增 我是否需要写十次测试,或者是否有一种方法(不使用数组或
if name1 != "":
(do something)
for i in range(10):
if "name" + str(i) != "":
(do something)
print(form.name1.data)
print(form.name2.data)
print(form.name3.data)
etc.
其中,“name”后面的数字在1和10之间递增
我是否需要写十次测试,或者是否有一种方法(不使用数组或dict)来“连接”,也就是说,变量名
我在想这样的事情:
if name1 != "":
(do something)
for i in range(10):
if "name" + str(i) != "":
(do something)
print(form.name1.data)
print(form.name2.data)
print(form.name3.data)
etc.
编辑:我不能使用列表,因为我实际上正在尝试解析来自Flask WTF表单的结果,在该表单中检索的结果如下:
if name1 != "":
(do something)
for i in range(10):
if "name" + str(i) != "":
(do something)
print(form.name1.data)
print(form.name2.data)
print(form.name3.data)
etc.
如果不能使用列表或dict,可以使用
eval
for i in range(10):
if eval("name" + str(i)) != "":
(do something)
如果不能使用列表或dict,可以使用
eval
for i in range(10):
if eval("name" + str(i)) != "":
(do something)
names = ['bob', 'alice', 'john']
然后在列表上迭代:
for n in names:
if n != "":
(do something)
if (name1 != "" or name2 != "" or name3 != "")
names = ['bob', 'alice', 'john']
然后在列表上迭代:
for n in names:
if n != "":
(do something)
if (name1 != "" or name2 != "" or name3 != "")
最好的解决方案是使用解决方案1。首先,你的应用程序有无效的逻辑。您应该使用列表、dict或自定义obj 您可以获取全局变量中的所有变量。Globals是一个名言 接下来,您可以执行以下操作:
for i in range(10):
if globals().get('name%d' % i):
# do something
首先,你的应用程序有无效的逻辑。您应该使用列表、dict或自定义obj 您可以获取全局变量中的所有变量。Globals是一个名言 接下来,您可以执行以下操作:
for i in range(10):
if globals().get('name%d' % i):
# do something
您使用一个列表来保存您的值,而不是十个不同的变量!有什么原因不能使用列表或dict来完成此操作?这将是最直接的solution@Rodolphe你应该解释为什么不能使用列表。这听起来很像。在几乎所有的情况下,使用
eval
这样做意味着你有一个可怕的软件设计问题。你用一个列表来保存你的值,而不是十个不同的变量!有什么原因不能使用列表或dict来完成此操作?这将是最直接的solution@Rodolphe你应该解释为什么不能使用列表。这听起来很像。在几乎所有的情况下,使用eval
这样做意味着你有一个可怕的软件设计问题。。。但是谢谢!我不能使用列表不幸的是。。。但是谢谢!注1。2.3.注1。2.3.