在python循环期间分配不同的运算符

时间:2014-01-30 13:07:39

标签: python operators

我想将循环结果分配给一个连续的运算符,例如:

for x in xrange(1, 5):
    answer = 5 + x

如何将其替换为:

for x in xrange(1, 5):
    answerx = 5 + x

意思是,将答案分配给answer1,answer2等

这可能吗?如何?

5 个答案:

答案 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 ...作为单个变量。有些人可能会说这不是一个“好习惯”,但我不时会使用这个陈述,发现它对某些应用程序非常有用......