Python 3.5:通过循环更改变量名称来分配变量值

问题描述:

我试图用不同的值循环类似的变量名称,但发现无法这样做。我附上了下面的代码。你能否建议我循环做什么以获得版本1代码的效果?非常感谢。Python 3.5:通过循环更改变量名称来分配变量值

#Version 1: The intended effect 
def test(): 

    global v1, v2, v3 

    v1 = 1 
    v2 = 2 
    v3 = 3 

    print (v1) 
    print (v2) 
    print (v3) 

if __name__ == "__main__": 
    test() 

和:

#Version 2: The loop I tried but failed 
def test(): 

    global v1, v2, v3 

    for i in range (1,3): 
     "v" + str(i) = i 
     print ("v" + str(i)) 

if __name__ == "__main__": 
    test() 
+0

您试图将“str”分配给一个名称(即变量)。这是不正确的。想象一下,如果你已经完成了“v1”= 1' –

+1

你有什么理由不能使用列表? –

+1

使用字典。不要使用全局变量。 –

# Version 3: What you should be doing 

def test(): 
    v = [] 
    for i in range(1, 3): 
     v.append(i) 
     print(v[i-1]) 

if __name__ == '__main__': 
    test() 

全球范围内,“变量变量”,以及各种其他的解决方案是多余的,一般丑陋(因为它们最终会导致难以调试破损在更大的应用程序)为此。只需使用list这种类型的东西。

# Version 4: Bonus list comprehension version 

def test(): 
    return [i for i in range(1, 3)] # or list(range(1, 3)) 
+0

大家好,感谢您的及时回复。但我正在寻找的是通过类似的全局变量的循环。重点是做“v”+ str(i)的部分,打印只是为了说明结果。现在我正在编写一个代码来开发一个系列中的30多个全局变量,并且每个变量都将被分配到一个类似算法的tkinter小部件,因此寻找一种循环方式,而不是一直重复类似代码。对此有何想法?再次感谢。 –

+0

你为什么使用全局变量?你几乎不需要全球范围。 (我从未想过在职业生涯中任何时候我都需要它)。另外,如果你想循环这些并且它们都是相关的(例如,你可能认为把它们存储为'v1','' v2',...,'vN'),那么**应该告诉你它应该是一个列表**! –