借random模块聊一下生成器的好处

下面的例子是一个生成指定书目的随机数的函数,这个函数的返回值是一个可迭代的对象,也就是生成器,在使用生成器的过程中,我感受到了两个生成器带来的好处,第一个是生成器返回一个可迭代对象,每一次迭代产生一个值,然后去处理这个值,这样在处理大数据的时候可以很好的节省内存,另一方面,使用生成器可以让代码更加简洁易懂,如果我们的函数要返回一个列表,那么我们需要事先先定义一个空的list,然后通过循环逐个加入到列表中,最终使用return 返回list,但是生成器的好处在于,我们不需要事先指定空的list,只需要通过yield关键词返回一个生成器,然后通过list(生成器)直接将所有的结果放到一个list当中,可以说,让我们的代码变得更加简洁了,因为少了几行,且更容易懂,我是这样理解的。 

import random

def makerandom(limit,random_range):
    for i in range(limit):
        yield random.randrange(random_range)


random.seed(1)
print(list(makerandom(10,8)))

# [2, 1, 4, 1, 7, 7, 7, 6, 3, 1]

下面的这段代码是不使用生成器的版本

def makerandom(limit,random_range):
    random_list = []
    for i in range(limit):
        random_list.append(random.randrange(random_range))
    return random_list

可以看到多了两行代码。

不过事实上,我们也可以通过列表解析式来简化代码,如下所示


def makerandom(limit,random_range):
        return [random.randrange(random_range) for i in range(limit)]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值