期间分配不同的运营商,我想循环的结果分配给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