美文网首页
生成器,迭代器

生成器,迭代器

作者: 流蓝浅 | 来源:发表于2018-04-03 21:21 被阅读0次
1、有规律的列表,[] ==> () 生成器
a = [x for x in range(9)]
2、规律很难有一个简单表达式表示出来
斐波拉契数列(Fibonacci)
前两个数之和等于3个数
def fib(max):
    first,second,index = 1,1,0
    while index < max:
        first,second = second,first+second
        print(first)
        index += 1

xss
sql web


"""
    斐波拉契生成1.0版
"""
# def fib(max):
#   first,second,index = 1,1,0
#   while index < max:
#       first,second = second,first+second
#       print(first)
#       index += 1

# fib(10)


"""
    斐波拉契生成1.0版
    如果生成的数列数据特别庞大的时候,内存的占有就很大
"""
# ls = []
# def fib(max):
#   first,second,index = 1,1,0
#   while index < max:
#       first,second = second,first+second
#       ls.append(first)
#       index += 1

# fib(10)
# print(ls)

def fib(max):
    if max == 1:
        return  1
    if max == 2:
        return  2
    return fib(max-1) + fib(max - 2)


# yield关键字,会将函数转换为一个生成器
# def fib(max):
#     first,second,index = 1,1,0
#     while index < max:
#         first,second = second,first+second
#         yield first # 暂停一下,返回一个返回值 只能用next接受
#         index += 1
#
# res = fib(10)
# print(res)

#
# def fib(max):
#     first,second,index = 1,1,0
#     while index < max:
#         first,second = second,first+second
#         print("yield之前")
#         yield first
#         print("yield之后")
#         index += 1

# yield关键字生成生成器时,调用函数,该函数不会执行,只会转化为生成器,返回给返回值
# res = fib(10)
# print(res)
# print(next(res))
# print(next(res))
# for x in res:
#     print(x)
""""
send主要用于控制生成器的流程
"""
def demo1():
    while True:
        temp = yield 1
        if temp == 1:
            print("打印数据")
        elif temp == 2:
            print("存储数据")
        elif temp == 3:
            print("展示数据")

res = demo1()
# 我们使用send来控制生成器函数的流程的时候
# 应该首先让生成器next
next(res)
res.send(2)
res.send(1)
iter()可以将可迭代的对象转换为迭代器
# ls = [1,3,4,45,6,67,77,]
# for x in ls:
#     print(x)

# t = (1,3,4,45,6,67,77,)
# for x in t:
#     print(x)

# str = "liujianhongisgoodman"
# for x in str:
#     print(x)

# dict = {"name":"liujianhong","age":16,"sex": "nan"}
# for k,v in dict.items():
#     print(k,v)

# ls = (x for x in range(100))
# for x in ls:
#     print(x)

from collections import Iterable,Iterator
#Iterable 类型用来判断是否可被迭代的对象
ls = (x for x in range(100))
a = 10
# 判断某个对象是否可以被迭代
# isTrue = isinstance(a,Iterable)
# print(isTrue)
dict = {"name":"liujianhong","age":16,"sex": "nan"}
t = (1,3,4,45,6,67,77,)
# iter 是一个全局函数
# 可以将可迭代的对象转换为迭代器
ts = iter(t)
print(isinstance(ts,Iterator))
print(ts.__next__())

相关文章

  • 2019-03-20

    1 迭代器和生成器 迭代器 获取数据:next (迭代器)、for 循环遍历 ,数据来源:转换、生成器 生成器:...

  • yield and Iterator

    Generator(生成器) 生成器是特殊的迭代器,迭代器不一定是生成器。 生成器与迭代器均是可迭代对象。 目前学...

  • 14. Python之迭代器(iterator)和生成器(gen

    1 什么是迭代器 2 为何要有迭代器 3 如何用迭代器 4 生成器 生成器应用案例

  • 第014篇:三大神器之生成器

    Python的三大神器:装饰器、迭代器、生成器 1、生成器 1.1、什么是生成器 生成器就是迭代器的一种;生成器作...

  • ES6 ES7 语法特性与规范

    生成器函数 说生成器之前先讲迭代器,下面就是迭代器的简单范例,迭代器代表一个流程,迭代器的每次next()调用,会...

  • Python基础-16生成器-迭代器

    16.生成器-迭代器     可循环迭代的对象称为可迭代对象,迭代器和生成器函数是可迭代对象,在Python中提供...

  • 迭代器

    可迭代对象(Iterable): for迭代器(Iterator): for + next生成器属于迭代器。 验...

  • Python :生成器、迭代器、装饰器、递归函数与正则表达式

    Python 第四篇:生成器、迭代器、装饰器、递归函数与正则表达式 Python迭代器和生成器 Python 迭代...

  • Python生成器

    1 生成器概念 生成器是一个特殊的迭代器(迭代器的抽象层级更高)所以,生成器拥有迭代器的特性:1.惰性计算,节省内...

  • 协程,生成器,迭代器

    高频率切换 迭代器 自定义迭代器 生成器 特殊的迭代器

网友评论

      本文标题:生成器,迭代器

      本文链接:https://www.haomeiwen.com/subject/hqzchftx.html