迭代器和生成器补充

news/2025/5/24 1:55:53

初步铺垫:

for i in [1,2,3,4]:
passl = [1,2,3,4]l2 = iter(l)
print(l2.__next__())
print(l2.__next__)print(range(100)) #range(100) 就是一个生成器,为了节省内存,值不会直接输出
print(range(0,100))

#两种range取值方法:

print(list(range(100))) #通过列表
for i in range(100): #通过for循环print(i)
print(list(range(1,100,2))) #步长

生成器变形计划:

一级变形:

def a():a = 0while True:# return ayield aa = a+1print(a().__next__())
print(a().__next__())  #全是0,每次重新执行那个函数,这个函数就会重新执行

二级变形:

def a():a = 0while True:# return ayield aa = a+1l = a()
print(l)
print(l.__next__()) #next可以递归的取值,是因为l始终指得是一个函数
print(l.__next__())
print(l.__next__())

三级变形:

def test2():# for i in range(1,6):#     yield i #冻结yield 1yield 2yield 3yield 4yield 5l=test2()
print(l.__next__())
print(l.__next__())
print(l.__next__())

四级变形:(模拟range功能)

def range2():start = 0while start<10:yield start*4start += 1for i in range2():print(i)

五级变形:

def range2():start = 0l = []while start<100:l.append(start*4)start += 1return l
print(range2())

六级变形:

def range3():start = 0while True:yield start*4start += 1# print(range3())
for i in range3():print(i)

练习之变形计划

练习一:

"1+1+2+3+5..." #斐波那契数列

#初步:
def test(): a,b = 1,1while a<10:c = a + byield ca = bb = c
print(test())
l = test()
print(l.__next__())
print(l.__next__())
for i in l:print(i)#终极:
def test4():a = 1yield ab = 1yield bwhile True:c = a+byield ca = bb = cl = test4()
print(l.__next__())
print(l.__next__())
print(l.__next__())
print(l.__next__())
print(l.__next__())
# for i in l:
#     print(i)

练习二:

母鸡下蛋例子

def test3():i = 0while i < 10:yield '母鸡下了个蛋,这是第%s个蛋'%(i+1)i += 1l = test3()print(l.__next__())
print(l.__next__())
print(l.__next__())
for i in l:print(i)

 

转载于:https://www.cnblogs.com/luchuangao/p/6847081.html


https://dhexx.cn/news/show-2257074.html

相关文章

数组扩容 java_Java数组扩容问题

模拟扩容&#xff0c;由于不能使用方法&#xff0c;有些局限&#xff0c;可以运行看看。根据录入提示进行测试&#xff1a;package developer.test;/*** 默认创建一个长度为10的string数组&#xff0c;用户可以循环手动添加数据&#xff0c;当添加数据超过数组长度时&#xff0…

单位阶跃函数(Heaviside/unit step function)—— 化简分段函数

注意&#xff0c;单位阶跃函数一种不连续函数。 1. 常见定义 最经典的定义来自于 Ramp function&#xff08;斜坡函数&#xff0c;max{x,0}&#xff09;的微分形式&#xff1b; H(x)ddxmax{x,0}2. 化简分段函数 如对于指数分布的概率密度函数&#xff1a; f(x;λ){λe−λx0x≥…

第一周作业-三级菜单

1. 运行程序输出第一级菜单2. 选择一级菜单某项&#xff0c;输出二级菜单&#xff0c;同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 1 #coding:utf-82 #Author:Mr Zhi3 file_o open("menu",r,encoding"utf-8&…

bdd java_Java的BDD框架之间有什么区别?

我刚刚完成了比较三个BDD框架的Java。显然我的发现有一个相当短的使用期限。>非常灵活>非常漂亮的报表输出>好的插件框架>记录不良。我不得不读的来源&#xff0c;以计算出来(幸运的是&#xff0c;它非常好的质量)。>装置似乎可能最终紧密耦合到html。>非常浅…

成绩图表JAVA_求大神帮忙看一下这段java代码怎么能让记录学生成绩的表格显示出来啊?...

展开全部你没有给table赋值。代码如下即可package student.UI;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.aw…

结对编程之四则运算——第一阶段报告

前言感谢 感谢老师能够带给我们结对编程这一机会&#xff0c;我相信两个人的智慧互相交织会产生不可思议的成果的&#xff0c;我也相信我们的程序将会越做越好。 需求分析 首先用户是我将要测试的对象&#xff0c;我认为这个程序的最终版本需要达到&#xff1a; 1要让测试者知晓…

delimiter 与 存储过程

1.如此执行语句不行&#xff0c;需要在 delimiter IF not EXISTS (SELECT*FROMinformation_schema. COLUMNSWHEREtable_schema thc_rcmAND table_name Cs_AccountBillDetailAND column_name shopSetItemId) THENALTER TABLE thc_rcm.Cs_AccountBillDetailADD COLUMN shopSet…

java实现word下载_JAVA实现Word/Excel读写

概述介绍Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的。在hwpf里面我们使用HWPFDocument来表示一个word doc文档。在HWPFDocument里面有这么几个概念&#xff1a;Range&#xff1a;它表示一个范围&#xff0c;这个范围可以是整个文档&#xff0c;也可以是里面的…

Linux下实现免密码登录

1.Linux下生成密钥 ssh-keygen的命令手册&#xff0c;通过”man ssh-keygen“命令&#xff1a; 通过命令”ssh-keygen -t rsa“ 生成之后会在用户的根目录生成一个 “.ssh”的文件夹 进入“.ssh”会生成以下几个文件 authorized_keys:存放远程免密登录的公钥,主要通过这个文件记…

java实验6 词频统计_JAVA实训一——词频统计

实验小组&#xff1a;领航员&#xff1a;16012012张志贤 组员&#xff1a;16012014李鑫码云地址&#xff1a;https://gitee.com/lixin-123/practical_training实验背景&#xff1a;本次实验&#xff0c;是由小组内两人完成。按照要求&#xff0c;和一个伙伴坐在一起&#xf…