Python (十一) 迭代器与生成器

迭代器

迭代器是访问集合元素的一种方式,可以记住遍历的位置的对象

迭代器有两个基本的方法:iter() 和 next()

字符串,列表或元组对象都可用于创建迭代器

字符串迭代

str1 = 'Python'
str_iter = iter(str1)
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))#输出
P
y
t
h
o
n

列表迭代

list = [2,4,6,8,10]
list_iter = iter(list)
print(next(list_iter))
print(next(list_iter))
print(next(list_iter))
print(next(list_iter))
print(next(list_iter))#输出
2
4
6
8
10

元组迭代


tup1 = ('java','python','php')
tup_iter = iter(tup1)
print(next(tup_iter))
print(next(tup_iter))
print(next(tup_iter))
print(next(tup_iter))#输出
java
python
php
Traceback (most recent call last):print(next(tup_iter))
StopIteration

StopIteration

从上面元组的迭代结果中,我们发现了第四次迭代报错:StopIteration

作用:防止出现无限循环迭代

list = [1,2,3,4,5,6,7,8,9]
for i in list:if i > 3:raise StopIterationelse:print(i)#输出
1
2
3
Traceback (most recent call last):raise StopIteration
StopIteration

判断对象是否可迭代

from collections.abc import Iterableprint(isinstance([1,2,3,4],Iterable))
print(isinstance(1234,Iterable))
print(isinstance('123',Iterable))#输出
True
False
True

生成器

生成器是一个用于创建迭代器的简单而强大的工具

使用 yield 语句,每次在生成器上调用next()时,它会从上次离开的位置恢复执行(它会记住上次执行语句时的所有数据值)

def reverse(data):for index in range(len(data)-1, -1, -1):yield data[index]for i in reverse('Python'):print(i)   #输出
n
o
h
t
y
P


系列文章索引

Python(一)关键字、内置函数

Python(二)基本数据类型

Python(三)数据类型转换

Python(四)字符串

Python(五)数字

Python(六) 列表

Python(七) 条件控制、循环语句

Python(八) 字典

Python(九) 集合


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/190781.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot引入redisson分布式锁及原理

1.引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version> </dependency>2.配置类创建bean /*** author qujingye* Classname RedissonConfig* Description TOD…

开源简历生成器OpenResume

什么是 OpenResume &#xff1f; OpenResume 是一个功能强大的开源简历生成器和简历解析器。OpenResume 的目标是为每个人提供免费的现代专业简历设计&#xff0c;让任何人都能充满信心地申请工作。 OpenResume 有 5 个核心特点&#xff1a; 特征描述1. 实时UI更新当您输入简历…

英孚成人英语水平测试分为几个级别?

目录 一、1-3入门级二、4-6初级三、7-9中级四、10-12中高级五、13-15高级六、16精通级 英孚成人英语正式学习前老师会让学员进行等级测试&#xff0c;通过测试结果帮助学员制定学习计划。那么英孚成人英语水平测试分几个级别呢&#xff1f;这里大家一起了解一下。 英孚成人英语…

【Java】恺撒密码,stream流,方法引用

文章目录 一、题目二、题解2.1、写法12.2、写法2&#xff0c;stream流2.3、写法3&#xff0c;方法引用 一、题目 二、题解 2.1、写法1 普通写法, 遍历每个字符进行加密 public static void main1 (String[] args) {Scanner sc new Scanner(System.in);String strs sc.nextL…

Nacos 配置中心底层原理(1.X版本)

前言 Nacos 1.X版本 是长轮询 Nacos 2.X版本 是GRPC 长轮询 概念 客户端会轮询向服务端发出一个长连接请求&#xff0c;这个长连接最多30s就会超时&#xff0c;服务端收到客户端的请求会先判断当前是否有配置更新&#xff0c;有则立即返回&#xff0c;如果没有服务端会将这个…

vscode 推送本地新项目到gitee

一、gitee新建仓库 1、填好相关信息后点击创建 2、创建完成后复制 https&#xff0c;稍后要将本地项目与此关联 3、选择添加远程存储库 4、输入仓库地址&#xff0c;选择从URL添加远程存储仓库 5、输入仓库名称&#xff0c;确保仓库名一致

redis安装(Windows和linux)

如何实现Redis安装与使用的详细教程 Redis 简介 Redis是一个使用C语言编写的开源、高性能、非关系型的键值对存储数据库。它支持多种数据结构&#xff0c;包括字符串、列表、集合、有序集合、哈希表等。Redis的内存操作能力极强&#xff0c;其读写性能非常优秀&#xff0c;且…

动态头像如何制作?这个方法请收藏

照片是记录生活的一种方式&#xff0c;但是静态图片有时候不能够完全表达我们的情感。而动态的图片能够让图片以更生动的方式来展示我们的想象力和内心情感。那么&#xff0c;大家知道动态图片制作的方法有哪些吗&#xff1f;使用gif动画制作&#xff08;https://www.gif.cn/&a…

BGP的基础知识

BGP——边界网关协议 IGP——内部网关协议——OSPF、RIP、ISIS EGP——外部网关协议——EGP、BGP 边界网关协议BGP是一种实现自治系统AS之间的路由可达&#xff0c;并选择最佳路由的路径矢量路由协议。目前在IPV4环境下主要使用BGPV4&#xff0c;目前市场上也存在BGPV4&…

OpenAI GPT-4 Turbo发布:开创AI新时代

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; IT杂谈 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. GPT-4 Turbo的突破1.1上下文长度和控制手段的加强&#xff1a;1.2多模态支持&#xff1a…

【2】SM2验签工具和RSA验签工具

0X01 前言 最近看了好多验签工具&#xff0c;感觉不是很好用&#xff0c;就自己造了个。 0x02 工具功能介绍 对SM2算法进行验签和RSA算分进行验签&#xff0c;签名值可以是base64&#xff0c;也可以是十六进制。 兼容各种输入。 0x03 工具使用 RSA 验签 SM2 验签 0x04 工具…

【JavaEE初阶】 CSS的引入方式和选择器

文章目录 &#x1f332;CSS是什么&#xff1f;&#x1f340;CSS基础语法规范&#x1f384;引入方式&#x1f6a9;内部样式表&#x1f6a9;行内样式表&#x1f6a9;外部样式 &#x1f334;代码风格&#x1f333;选择器&#x1f6a9;选择器的种类&#x1f6eb;基础选择器&#x1…