我想将循环结果分配给一个连续的运算符,例如:
for x in xrange(1, 5):
answer = 5 + x
如何将其替换为:
for x in xrange(1, 5):
answerx = 5 + x
意思是,将答案分配给answer1,answer2等
这可能吗?如何?
答案 0 :(得分:6)
将答案附加到列表中,或者更好的是,使用列表理解:
answers = [5 + x for x in xrange(1, 5)]
现在,您可以解决answers[0]
,answers[1]
等问题。
你也可以把它变成字典:
answers = {'answer{}'.format(x): 5 + x for x in xrange(1, 5)}
每当您感觉到从数据生成变量名称的冲动时,您可能希望使用字典或列表。 Keep data out of your variable names
答案 1 :(得分:2)
从第一条评论中,给出完整的例子:
answer = []
for x in xrange(1,5) :
answer.append(5 + x)
并且正如所说的列表理解更多是Python的方式
回答= [5 + x代表xrange(1,5)]
答案 2 :(得分:1)
最好的办法是使用清单:
answers = []
for x in xrange(1, 5):
answers.append(5 + x)
然后您可以answers[0]
等方式访问答案。
...但是列表理解甚至更好,就像Martijn Pieters的回答一样。
答案 3 :(得分:0)
我不认为你会这样做,但这是一个解决方案(在ipython上试试这个):
for x in xrange(1, 5):
locals()["answer"+str(x)] = 5 + x
答案 4 :(得分:-1)
您问题的解决方案是:
for x in xrange(1,5):
exec("answer"+str(x)+"= 5 + x")
像这样,您可以使用answer1,answer2 ...作为单个变量。有些人可能会说这不是一个“好习惯”,但我不时会使用这个陈述,发现它对某些应用程序非常有用......