使用循环创建变量Python3

使用循环创建变量Python3,python,class,loops,attributes,iteration,Python,Class,Loops,Attributes,Iteration,简介:我正在使用tkinter模块创建两个窗口,每个窗口作为单独的类。我想获取在第一个窗口中输入的整数,并使用它在第二个窗口中创建相同数量的标签和条目 i、 e 我知道这是行不通的;我包含它只是为了说明我想要做的事情:根据numTests参数创建大量帧 我曾想过使用列表,但这是一个问题,因为我不知道如何将字符串转换为变量名: varList = [] for number in range(1, numberTests): label = str(number) var = 'F

简介:我正在使用tkinter模块创建两个窗口,每个窗口作为单独的类。我想获取在第一个窗口中输入的整数,并使用它在第二个窗口中创建相同数量的标签和条目

i、 e

我知道这是行不通的;我包含它只是为了说明我想要做的事情:根据numTests参数创建大量帧

我曾想过使用列表,但这是一个问题,因为我不知道如何将字符串转换为变量名:

varList = []
for number in range(1, numberTests):
    label = str(number)
    var = 'Frame' + label
    varList.append(var)

有什么想法吗?

如果使用列表,则无需生成名称:

self.frames = []
for number in range(numTests):
    self.frames.append(tkinter.Frame(self.secondMaster))
您可以通过使用列表来简化:

self.frames = [tkinter.Frame(self.secondMaster) for _ in in range(numTests)]
现在,您可以通过索引访问每个帧:

self.frames[0]
self.frames[1]
或者在它们之间循环:

for frame in self.frames:
    # do something with frame

尽管我喜欢@Martijn Pieters,但如果您确实想在循环中命名变量,我发现最简单的方法就是使用内置的
exec
函数

例如,如果我想使x0、x1、x2、x3等于列表的前4项,我将执行以下操作:

>>>the_list = [1, 3.4, 'g', sum]

>>> for i in range(len(the_list)):
...    exec('x%i = the_list[%i]' % (i, i))

>>> print(x0)
1 
>>> print(x1)
3.4
>>> print(x2)
g
>>> print(x3)
<built-in function sum>
>列表=[1,3.4,'g',sum]
>>>对于范围内的i(len(_列表)):
...    exec('x%i=_列表[%i]'%(i,i))
>>>打印(x0)
1.
>>>打印(x1)
3.4
>>>打印(x2)
G
>>>打印(x3)

是。如果您正在考虑创建任意数量的变量,那么最好使用某种容器,例如列表或字典。
>>>the_list = [1, 3.4, 'g', sum]

>>> for i in range(len(the_list)):
...    exec('x%i = the_list[%i]' % (i, i))

>>> print(x0)
1 
>>> print(x1)
3.4
>>> print(x2)
g
>>> print(x3)
<built-in function sum>