期間分配不同的運營商,我想循環的結果分配給contineous運營商,例如:蟒蛇循環
for x in xrange(1, 5):
answer = 5 + x
我怎樣才能將其替換這樣的:
for x in xrange(1, 5):
answerx = 5 + x
含義,分配答案回答1,答案2等
這是可能的和如何?
期間分配不同的運營商,我想循環的結果分配給contineous運營商,例如:蟒蛇循環
for x in xrange(1, 5):
answer = 5 + x
我怎樣才能將其替換這樣的:
for x in xrange(1, 5):
answerx = 5 + x
含義,分配答案回答1,答案2等
這是可能的和如何?
最好的辦法是用一個列表:
answers = []
for x in xrange(1, 5):
answers.append(5 + x)
然後你就可以訪問答案爲answers[0]
等。
......但列表理解更好,正如Martijn Pieters的回答。
謝謝,這個作品完美。也會嘗試其他的,但是我正在尋找! – wernerfeuer
追加解答列表,或者更好的是,使用列表理解:
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。
它會更適合使用列表中的一個生成器「(x + x for xrange(1,5))」,但我也說1+列表理解! :D – markcial
@markcial:這取決於OP如何計劃使用輸出。 –
我不認爲你會想這樣做,但這裏有一個解決方案(試試這IPython中):
for x in xrange(1, 5):
locals()["answer"+str(x)] = 5 + x
從第一個評論,給人完整的例子:
answer = []
for x in xrange(1,5) :
answer.append(5 + x)
和所述列表理解是更Python的方式這樣做
答案= [5 + x for x in xra NGE(1,5)]
你的問題的解決方案是:
for x in xrange(1,5):
exec("answer"+str(x)+"= 5 + x")
這樣,你可以使用ANSWER1,ANSWER2 ......作爲單獨的變量。有些人可能會說這不是一個「良好做法」,但我經常使用這種說法,發現它對於某些應用非常有用...
除了可怕的風格和完全不必要的(即使動態創建變量是可以接受的),它也不適用於函數內部(至少在Python 3中)。 – delnan
你爲什麼認爲你想這樣做?一般來說,如果你想動態地命名變量,包括數字,你真的想要一個列表。 – geoffspear
您可以使用該模塊的產量爲 「def answers(min = 1,max = 5): for x in xrange(min,max): yield 5 + x' – markcial