请选择 进入手机版 | 继续访问电脑版
楼主: 阿扁V5
798 1

[数据挖掘工具] Python3学习笔记9-迭代器与生成器 [推广有奖]

  • 1关注
  • 43粉丝

版主

山野小子

副教授

94%

还不是VIP/贵宾

-

威望
0
论坛币
-11692322 个
通用积分
3822.7338
学术水平
108 点
热心指数
119 点
信用等级
91 点
经验
49314 点
帖子
1168
精华
1
在线时间
651 小时
注册时间
2013-3-22
最后登录
2024-3-17

阿扁V5 学生认证  发表于 2018-5-20 17:35:05 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
第9发:python极其犀利高效却使用不广泛的迭代器与生成器!
[url=]Python3学习笔记9-迭代器与生成器 ...[/url]
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Python 学习笔记 生成器

Python3学习笔记9-迭代器与生成器.txt

2.42 KB

憧憬机器学习的世界!
阿扁V5 学生认证  发表于 2018-8-20 18:01:47 |显示全部楼层 |坛友微信交流群
# 2018.05.13
# by pengxw

# Python3 迭代器与生成器

# 迭代器
# 迭代是Python最强大的功能之一,是访问集合元素的一种方式。
# 迭代器是一个可以记住遍历的位置的对象。
# 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
# 迭代器有两个基本的方法:iter() 和 next()。

# 字符串,列表或元组对象都可用于创建迭代器:
list1 = [6,7,8,9,10]
it = iter(list1)
print(next(it))
print(next(it))

# 迭代器对象可以使用常规for语句进行遍历:
list1 = [6,7,8,9,10]
it = iter(list1)
for x in it:
    print(x, end = " ")

# 也可以使用 next() 函数:
list1 = [6,7,8,9,10]
it = iter(list1)
import sys
while True:
    try:
        print(next(it))
    except StopIteration:
        sys.exit()

               
# 生成器
# 在 Python 中,使用了 yield 的函数被称为生成器(generator)。
# 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
# 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值
# , 并在下一次执行 next() 方法时从当前位置继续运行。
# 调用一个生成器函数,返回的是一个迭代器对象。

# 以下实例使用 yield 实现斐波那契数列:
import sys

def fib(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n):
            return
        yield a
        a, b = b, a + b
        print('%d,%d' % (a, b))
        counter += 1
        
f = fib(10) # f 是一个迭代器,由生成器返回生成
while True:
    try:
        print(next(f), end=" ")
    except StopIteration:
        sys.exit()
               
# 一个函数 f,f 返回一个 list,这个 list 是动态计算出来的(不管是数学上的计算还是逻辑上的读取格式化),
# 并且这个 list 会很大(无论是固定很大还是随着输入参数的增大而增大),这个时候,
# 我们希望每次调用这个函数并使用迭代器进行循环的时候一个一个的得到每个 list 元素而不是直接得到一个完整的 list 来节省内存,
# 这个时候 yield 就很有用。

# 具体怎么使用 yield 参考附件:Python yield 使用浅析

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 14:00