使用循环创建变量Python3
简介:我正在使用tkinter模块创建两个窗口,每个窗口作为单独的类。我想获取在第一个窗口中输入的整数,并使用它在第二个窗口中创建相同数量的标签和条目 i、 e 我知道这是行不通的;我包含它只是为了说明我想要做的事情:根据numTests参数创建大量帧 我曾想过使用列表,但这是一个问题,因为我不知道如何将字符串转换为变量名:使用循环创建变量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
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>