Python中迭代器和列表解析怎么使用?

迭代器:初探

上一章曾经提到过,其实for循环是可用于任何可迭代的对象上的。实际上,对Python中所有会从左至右扫描对象的迭代工具而言都是如此,这些迭代工具包括了for循环、列表解析、in成员关系测试以及map内置函数等。

“可迭代对象”的概念在Python中是相当新颖的,基本这就是序列观念的通用化:如果对象时实际保存的序列,或者可以再迭代工具环境中一次产生一个结果的对象,那就看做是可迭代的。

>>文件迭代器
作为内置数据类型的文件也是可迭代的,它有一个名为__next__的方法,每次调用时,就会返回文件中的下一行。当到达文件末尾时,__next__会引发内置的StopIteration异常,而不是返回空字符串。

这个接口就是Python中所谓的迭代协议:有__next__方法的对象会前进到下一个结果,而在一系列结果的末尾时,则会引发StopIteration。任何这类对象都认为是可迭代的。任何这类对象也能以for循环或其他迭代工具遍历,因为所有迭代工具内部工作起来都是在每次迭代中调用__next__,并且捕捉StopIteratin异常来确定何时离开。

立即学习“Python免费学习笔记(深入)”;

Python 迭代器和列表解析

1)迭代器

 一种特殊的数据结构,以对象形式存在        >>> i1 = l1.__iter__()        >>> i1 = iter(l1)        可迭代对象:            序列:      list、str、tuple            非序列:     dict、file            自定义类:  __iter__()、 __getitem__()   注意:         若要实现迭代器,需要在类中定义next()方法         要使迭代器指向下一个对象,则使用成员函数 next()              i1.next()         当没有元素时,会引发StopIteration异常         for循环可用于任何可迭代对象                  例:   >>> l1 = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']                >>> i1 = l1.__iter__()                >>> il.next()                'Sun'                 >>> il.next()                'Mon'

登录后复制

2)列表解析 [ ]

根据已有列表,高效生产新列表的方式。 常用于实现创建新的列表,因此要放置于 [ ] 中语法:    [ expression for iter_var in iterable ]    [ expression for iter_var in iterable if cond_expr ]    os模块中  listdir() 能够列出所有文件    例:事先定义l1 l2        l1 = [ 1,2,3,4,5 ]     l2=[ ]                           >>>  for i in l1:                   l2.append(i**2)                     l2列表内各项为l1的平方           >>>  print l2           [1, 4, 9, 16, 25]            >>> l3 = [ i**2 for i in l1 ]               l3列表内各项为l1的平方            [1, 4, 9, 16, 25]                      >>> l4 = [ i**2 for i in l1 if i>=3 ]       l3列表内各项为l1中 >= 3的平方            [9, 16, 25]                 例题:  l1 = ['x','y','z']     l2 = [1,2,3]  应用列表解析方法使其各项相乘                        >>> l3 = [ (i,j) for  i in l1 for j in l2 ]     for循环内部嵌套一个for循环实现各项乘            [('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

登录后复制

3)生成器 ( )

    惰性计算、延迟求值    生成器表达式并不真正创建数字列表,而是返回一个生成器对象,此对象在每次计算出一个条目后,把这个条目产生出来(一次返回一个值)    语法:        ( expr for iter_var in iterable )        ( expr for iter_var in iterable  if cond_expr )         例:  >>> l1 = ( i**2 for i in range(2,11,2))           >>> l1.next()           2           >>> l1 = ( i**2 for i in range(2,11) if i%2==0 )           >>> l1.next()           2     注意:        序列过长,并且每次只获取一个元素时,应当考虑使用生成器表达式而不是列表解析        列表解析与生成器的关系相当于range()与xrange()

登录后复制

4)产生偏移和元素

    enumerate    同时偏移缩印和偏移元素,使用enumerate()函数    此内置函数返回一个生成器对象    >>> S = 'Hello,world'    >>> a = enumerate(S)    >>> a.next()    (0,'H')    >>> a.next()    (1,'e')

登录后复制

以上就是Python中迭代器和列表解析怎么使用?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2268844.html

(0)
上一篇 2025年2月27日 10:54:51
下一篇 2025年2月24日 01:06:12

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 电脑编程语言有几种语言类型

    电脑编程语言可分为多种类型:编译型语言:编译时转换为机器指令,执行速度快,代表语言包括 C、C++、Java。解释型语言:逐行执行代码,开发效率高,但执行速度较慢,代表语言包括 Python、JavaScript、Ruby。面向过程语言:关…

    2025年2月27日
    200
  • Python之POST登录测试

    不解释,直接上代码: 1 #!/usr/bin/env python 2 # -*- encoding: utf-8 -*- 3 4 “”” 5 @version: v1.0 6 @author: elijahxb 7 @OS: linux…

    编程技术 2025年2月27日
    200
  • 在Python中面向对象该如何编程

    虽然python是解释性语言,但是它是面向对象的,能够进行对象编程。下面就来了解一下如何在python中进行对象编程。 一.如何定义一个类   在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法。 …

    编程技术 2025年2月27日
    200
  • 电脑编程的基本语言是什么

    计算机编程的基本语言是汇编语言。汇编语言是一种低级语言,使用助记符表示机器指令,效率高但可读性差。高级语言则与机器无关,使用类似自然语言的语法,可读性好且编写难度小。常用的高级语言包括 C 语言、Java、Python、JavaScript…

    2025年2月27日
    200
  • 哪个程序语言最像英语

    最像英语的编程语言是 Python,原因如下:Python 的关键字与英语单词相同。Python 的语法结构类似英语语法,使用缩进风格。Python 代码的单词顺序遵循英语单词顺序。Python 函数的命名方式与英语复合词类似。 最像英语的…

    2025年2月27日
    200
  • Python基础学习需要掌握哪些知识

    1.1python的对象 python的内置对象类型有很多,包括数字,字符串,列表,集合,元组,字典等等,在Python中,一切皆对象 pickle腌制–在Python中,如果有一些对象需要持久性存储,并且不丢失这个对象的类型和…

    编程技术 2025年2月27日
    200
  • 网络开发语言包括哪六个方面

    网络开发语言包含以下六个方面:前端开发(HTML、CSS、JavaScript、TypeScript),后端开发(Python、Java、Node.js、PHP),数据库(MySQL、PostgreSQL、MongoDB、Oracle),框…

    2025年2月27日
    200
  • 现在人们都学什么编程语言

    当下最热门的编程语言是:Python:机器学习、数据科学、Web 开发JavaScript:Web 开发Java:企业应用程序、安卓应用程序、游戏C#:桌面应用程序、Web 服务、游戏C++:操作系统、游戏、嵌入式系统 当下最热门的编程语言…

    2025年2月27日
    200
  • 使用python爬取散文网的文章

    image.png 配置python 2.7 bs4 requests 登录后复制 安装 用pip进行安装 sudo pip install bs4 sudo pip install requests 简要说明一下bs4的使用因为是爬取网页…

    2025年2月27日
    200
  • 那种计算机语言最流行好学

    对于初学者,Python和Java是流行且易学的计算机编程语言。Python因其简洁的语法和丰富的库而著称,而Java因其面向对象特性和跨平台能力而闻名。选择最适合自己需要的语言。 最流行且易学的计算机编程语言 在众多计算机编程语言中,Py…

    2025年2月27日
    200

发表回复

登录后才能评论