loops = (randrange(2,5) for x in xrange(randrange(3,7))) 的含义

最近在程序中遇到这样一个语句:
loops = (randrange(2,5) for x in xrange(randrange(3,7)))
百思不得其解,最后发现原来是这个意思,它的作用是:
生成3-6个(个数由randrange(3,7)控制)随机数,随机数的值为2-5(由randrange(2,5)控制)。

我们可以将这种形式推广运用。

>>> from random import randrange
>>> loops = (randrange(2,5) for x in xrange(randrange(3,7)))
>>> print loops
 at 0x03532508>
>>> list(loops)
[3, 4, 2, 3]
>>> loops = (randrange(2,5) for x in xrange(randrange(3,7)))
>>> print loops
 at 0x035325A8>
>>> list(loops)
[4, 2, 2]
>>> loops = (randrange(2,5) for x in xrange(randrange(3,7)))
>>> list(loops)
[3, 4, 2]
>>> loops = (randrange(2,5) for x in xrange(randrange(3,7)))
>>> list(loops)
[4, 4, 3, 2, 3]
>>>

从上可以发现,随机数没超过5,随机数的个数没超过6。

你可能感兴趣的:(loops = (randrange(2,5) for x in xrange(randrange(3,7))) 的含义)