首页 > 编程语言 >python 生成器与迭代器

python 生成器与迭代器

时间:2022-09-05 12:46:56浏览次数:56  
标签:迭代 python 生成器 iter li print next

生成器

生成器: 节省空间

# 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,生成器,iter,li,print,next
From: https://www.cnblogs.com/tangyuanzi/p/16649545.html

相关文章

  • 解决python命令行报错问题
    解决Python报错Failedcallingsys.__interactivehook__报错截图可以看到主要的报错信息File"D:\Python\Anaconda3\lib\site-packages\pyreadline\lineeditor\histo......
  • Python列表、元祖、字典查询速度对比
    先比较列表和字典的查询速度:字典查询速度快于列表,原因是:列表是有序的数组,每个值都有自己的索引位置,查询的时候会逐步偏移查找,很浪费时间,但是内存消耗小。而字典是key,value......
  • python变量和数据类型
    1.python变量含义变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。......
  • OpenHarmony中的HDF单链表及其迭代器
    概念为了性能考虑,嵌入式系统一般使用C语言进行开发,由于C语言标准库没有封装链表,所以嵌入式系统一般自己设计和实现链表这种数据结构。单链表是链表中的一种,本文描述Open......
  • Python数据分析易错知识点归纳(五):横向对比
    五、横向对比排序#列表a.sort()#修改原列表,返回值为None!!!!!这里很容易出错sorted(a)#生成新的列表#嵌套列表的排序(若是对字典排序,需先用list()转成列表形......
  • Python数据分析易错知识点归纳(三):Pandas
    三、pandas不带括号的基本属性df.indexdf.columns 注意可以直接赋值,如:df.columns=['A','B','C']df.valuesdf.shape返回元组df.size总个数df.dtypes#......
  • Python数据分析易错知识点归纳(四):Matplotlib
    四、matplotlib显示中文标签plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签不显示坐标轴刻度plt.xticks(())plt.yticks(())双Y图'''次坐标......
  • 如何使用 Python 翻译 YouTube 上的视频
    如何使用Python翻译YouTube上的视频Photoby诺德伍德主题on不飞溅大家好,今天我们将构建一个有趣的应用程序Python将音频语言从YouTube进入另一个语.这......
  • Python 简介 #2。课
    Python简介—第2课print("大家好!")大家好!我们已经离开了数据科学训练营的第二周。在本课中,我们快速介绍了数据科学项目中经常使用的Python语言。我将尝试为您......
  • 5 个 Python 有用的 One-Liners,初学者也能看懂
    5个Python有用的One-Liners,初学者也能看懂图片from像素现在我正在学习很多关于编程的知识(使用JavaScript和Python),并且我正在解决网站编码练习中的许多挑战。......