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
<generator object <genexpr> at 0x03532508>
>>> list(loops)
[3, 4, 2, 3]
>>> loops = (randrange(2,5) for x in xrange(randrange(3,7)))
>>> print loops
<generator object <genexpr> 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。

    原文作者:rebirth_2017
    原文地址: https://www.jianshu.com/p/f5604d887e60
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞