找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3797|回复: 7

[求助] 求帮忙搞一个生成器

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2017-5-1 14:22:13 | 显示全部楼层 |阅读模式
本帖最后由 uitb 于 2017-5-1 14:29 编辑

被一个生成器搞得头晕的,都不知道到底能不能通过生成器实现
就是将下面生成列表的方法改写成生成器:
  1. n = [1,2,3,4.......m]
复制代码
代码放楼下了,不明原因,在这贴的代码老是保存后就不见了
上面就是一个二维嵌套列表,头疼一上午了,这玩意儿通过for迭代肯定不现实,通过递归实现,在n及n中的元素足够大的时候,又太耗内存了,所以想搞成生成器,但太伤脑筋,头都要炸了


各位路过的大神牛人们,有没有会的啊,帮个忙呗。。。。



回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb  楼主| 发表于 2017-5-1 14:27:29 | 显示全部楼层
  1. n = [1,2,3,4.......m]
  2. lis = []
  3. for i in range(n[0]):
  4.     for j in range(n[1]):
  5.         ......
  6.             for x in range(n[-1]):
  7.                 lis.append([i,j......x])
复制代码
回复 支持 反对

使用道具 举报

1

主题

9

帖子

9

积分

贫民

积分
9
QQ
Adapter|S 发表于 2017-5-2 20:54:07 | 显示全部楼层
本帖最后由 Adapter|S 于 2017-5-2 20:57 编辑

def my_range(first=0, last=100, step=1):
    number = first
    while number < last:
        yield number
        number += step

range = my_range(0, 100)

for x in range:
    print(x)

里面的参数你就自己改吧,加油!

再给你个高逼格点的:
range = (number for number in range(1,100))
for number in range:
    print(number)
回复 支持 反对

使用道具 举报

0

主题

15

帖子

15

积分

贫民

积分
15
newlive 发表于 2017-5-3 09:00:11 | 显示全部楼层
二楼正解,建议用第二种方法,直接用列表生成的方式更便于代码管理,或者用lamda表达式也行
回复 支持 反对

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb  楼主| 发表于 2017-5-3 17:32:39 | 显示全部楼层
本帖最后由 uitb 于 2017-5-3 17:34 编辑
Adapter|S 发表于 2017-5-2 20:54
def my_range(first=0, last=100, step=1):
    number = first
    while number < last:

这玩意儿我知道啊,这算是Python基础知识了吧,但我问的比这个复杂的太多啊,需要改写的代码在一楼,另外我已经找到了另外的解决的办法
回复 支持 反对

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb  楼主| 发表于 2017-5-3 17:34:37 | 显示全部楼层
newlive 发表于 2017-5-3 09:00
二楼正解,建议用第二种方法,直接用列表生成的方式更便于代码管理,或者用lamda表达式也行 ...

我要的是将一楼的那种代码改写成生成器,不是要关于生成器的知识
回复 支持 反对

使用道具 举报

0

主题

15

帖子

15

积分

贫民

积分
15
newlive 发表于 2017-5-4 09:17:49 | 显示全部楼层
uitb 发表于 2017-5-3 17:34
我要的是将一楼的那种代码改写成生成器,不是要关于生成器的知识

哦,理解错了,看到你说你已经找到另外的解决办法了,那就祝你好运了
回复 支持 反对

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb  楼主| 发表于 2017-5-4 14:27:33 | 显示全部楼层
newlive 发表于 2017-5-4 09:17
哦,理解错了,看到你说你已经找到另外的解决办法了,那就祝你好运了

嗯嗯,3q
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表