2014-01-30 205 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