2014-01-30 49 views
0

期间分配不同的运营商,我想循环的结果分配给contineous运营商,例如:蟒蛇循环

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

我怎样才能将其替换这样的:

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

含义,分配答案回答1,答案2等

这是可能的和如何?

+0

你为什么认为你想这样做?一般来说,如果你想动态地命名变量,包括数字,你真的想要一个列表。 – geoffspear

+0

您可以使用该模块的产量为 “def answers(min = 1,max = 5): for x in xrange(min,max): yield 5 + x' – markcial

回答

1

最好的办法是用一个列表:

answers = [] 
for x in xrange(1, 5): 
    answers.append(5 + x) 

然后你就可以访问答案为answers[0]等。

......但列表理解更好,正如Martijn Pieters的回答。

+0

谢谢,这个作品完美。也会尝试其他的,但是我正在寻找! – wernerfeuer

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

+0

它会更适合使用列表中的一个生成器“(x + x for xrange(1,5))”,但我也说1+列表理解! :D – markcial

+1

@markcial:这取决于OP如何计划使用输出。 –

0

我不认为你会想这样做,但这里有一个解决方案(试试这IPython中):

for x in xrange(1, 5): 
    locals()["answer"+str(x)] = 5 + x 
2

从第一个评论,给人完整的例子:

answer = [] 
for x in xrange(1,5) : 
    answer.append(5 + x) 

和所述列表理解是更Python的方式这样做

答案= [5 + x for x in xra NGE(1,5)]

-1

你的问题的解决方案是:

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

这样,你可以使用ANSWER1,ANSWER2 ......作为单独的变量。有些人可能会说这不是一个“良好做法”,但我经常使用这种说法,发现它对于某些应用非常有用...

+0

除了可怕的风格和完全不必要的(即使动态创建变量是可以接受的),它也不适用于函数内部(至少在Python 3中)。 – delnan