python 生成器与迭代器

生成器

生成器: 节省空间

# generator 生成器
f = [i for i in range(1,1001)] # 列表
f = (i for i in range(1,1001)) # 生成器

在创建列表是,会在内存中全部创建出来,而生成器不会全部创建出来,而是使用一个就创建一个,结束后会被当垃圾回收掉
# 垃圾回收机制 只要符合没有被对象引用,python就会自动清理内存
# 使用方法
f.__next__() # 魔法方法,尽量不用
next(f) # 与f.__next__相同

生成器的创建

1. (i for i in range(1,10))
2. yeld 关键字

def f(): # 生成器
    print("f1")
    yield 1 # 挂起(暂停)
    print("f2")
    yield 2 

g = f() # 使用时必须赋值给一个变量
next(g) # f1   
print(next(g)) # f2  2

迭代器

可迭代对象:

for i in 可迭代对象:
    print(i)
# 可以for循环的都是可迭代对象

# 内置有iter方法的就是可迭代对象

生成器其实就是迭代器

l = [i for i in range(1,10)]
li = l.__iter__() # 返回一个可迭代对象
li = iter(l) # 一般用这个
# 这里li就是迭代器  l就是可迭代对象

# 迭代器满足2个方法
1. 有iter方法
2. 有next方法

遍历原理:

li = ["a","b","c"]
for i in li:
    print(i) # 本质就是使用了迭代器原理 next来做到遍历
   
# 遍历的本质的将 可迭代类型,转为了迭代器
# 然后不断的 next() 将其元素,从头到尾全部输出

# 1. d = li.__iter__()
# 2. 不断 i = next(d)
# 3. print(i)

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 生成器与迭代器 - Python技术站

(0)
上一篇 2023年4月2日 下午5:03
下一篇 2023年4月2日

相关文章

  • python入门

    注释 单行注释 # 这是单行注释 多行注释 ”’ 这是多行 注释 ”’ 1.注释一块内容 # 打印3次hello print(“hello”) print(“hello”) print(“hello”) 2.注释该行作用 print(1+1) # 计算1+1 print(2+2) # 计算2+2 3.多行注释快捷键 Ctrl+/ 变量 变量分为可变与不可…

    Python开发 2023年4月2日
    00
  • 普通函数、参数、匿名函数、高阶函数、递归函数、闭包、装饰器

    函数 定义 # 定义函数 def fn(): print(“这是函数内部”) # 调用 fn() fn() # 区分 fn: 这是真正意义上的函数本身 fn(): 这是调用函数 参数 形参 实参 函数参数可有可无,要看具体使用 形参是定义函数的参数 实参就是调用函数时需要传递的参数,函数有多少个形参就要传递多少个实参 形参的 默认值参数 形参里面可以设置默认…

    Python开发 2023年4月2日
    00
  • python 文件操作

    文件操作 打开: open(file, mode=”r”, buffering=None, encoding=None, errors=None, newline=None, closefd=True, opener=None) # file 文件路径,如果该文件在同级下,可直接使用文件名 路径: 绝对路径:计算机中唯一的路径从盘符开始,pychram中快捷…

    Python开发 2023年4月2日
    00
  • 变量与数据类型

    注释 单行注释 语法:# 注释的内容 说明多行代码的功能时,一般将注释写在代码的上一行 # 打印hello print(hello) print(hello) print(hello) 说明单行代码时,一般写在右边 print(1+2) # 加法运算 变量 先定义后使用 变量名规则: 变量名只能是字母、数字或者下划线的任意组合,且不能是数字开头 变量名不能取…

    Python开发 2023年4月2日
    00
  • python 模块、原始字符串

    模块 三种方法: import from 模块 import 成员,成员 from 模块 import * *代表所有的成员 隐藏成员: 模块中以下划线_开头的属性 隐藏成员不会被from 模块 import * 导入 导入模块时会将模块的代码全部执行 as 取别名 from module01 import f as f1 模块变量 __file__ : 模…

    Python开发 2023年4月2日
    00
  • 用户的交互

    用户的交互 用户交互:人往计算机中 input/输入数据,计算机print/输出结果 input 输入 输入input:程序执行input,程序就会停止下来等待用户键盘输入,用户输入的任何内容,都会被存为字符串。 默认存储的类型是字符串类型 print 输出 print(‘hello’) # 输出单个值 print(a, b) # 输出多个值,值用逗号隔开,…

    Python开发 2023年4月2日
    00
  • 序列类型

    序列类型 字符串 由很多个字符组成的字符序列,字符串属于 **序列类型 序列简介 数值类型:可以表示 数字,数值 int float bool 序列类型:存储多个数据的一种数据类型 str : 可以存储数字,字母,特殊符号,中文等数据.表现形式为 一对引号包囊起来的数据 list 列表 tuple 元组 数据结构:在编程语言中将会某种方式组合起来的数据元素集…

    Python开发 2023年4月2日
    00
  • python数据类型

    序列类型 str 字符型 list 列表 tuple 元组 列表与元组最大的区别就是列表可变,而元组不可变 遍历 从头到尾,依次访问到每一个 range() 包头不包尾 range(start,end,step) start 开始 end 结束 step 步长(步长可以是负数) 下标(索引) 序列类型有下标 # 正向下表 默认第一个为0 第二个为1 … …

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部