在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声明:

    if (name1 != "" or name2 != "" or name3 != "")
    
  • 最好的解决方案是使用解决方案1

  • 使用列表,例如:

    names = ['bob', 'alice', 'john']
    
    然后在列表上迭代:

    for n in names:
      if n != "":
         (do something)
    
  • 或者你可以有一个复合的if声明:

    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.