IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python系列教程163——更多迭代协议例子 -> 正文阅读

[人工智能]python系列教程163——更多迭代协议例子

朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

除了for循环外,还有很多工具都有自动迭代的能力。

下面是经典的for循环自动迭代文件的代码:

>>>for line in open('script1.py'):    # Use file iterators

...    print(line.upper(),end='')

...

IMPORT SYS

PRINT(SYS.PATH)

X = 2

PRINT(2 ** 33)

除了for循环外,列表解析、in成员关系测试、map内置函数以及像sorted和zip调用这样的内置函数也都使用了迭代协议。当应用于一个文件时,所有这些使用文件对象的迭代器都自动地按行扫描:

>>>uppers = [line.upper() for line in open('script1.py')]

>>>uppers

['IMPORT SYS\n','PRINT(SYS.PATH)\n','X = 2\n','PRINT(2 ** 33)\n']




>>>map(str.upper,open('script1.py'))          # map is an iterable in 3.0

<map object at 0x02660710>




>>>list( map(str.upper,open('script1.py')) )

['IMPORT SYS\n','PRINT(SYS.PATH)\n','X = 2\n','PRINT(2 ** 33)\n']




>>>'y = 2\n' in open('script1.py')

False

>>>'x = 2\n' in open('script1.py')

True


>>>sorted(open('script1.py'))

['import sys\n','print(2 ** 33)\n','print(sys.path)\n','x = 2\n']




>>>list(zip(open('script1.py'),open('script1.py')))

[('import sys\n','import sys\n'),('print(sys.path)\n','print(sys.path)\n'),

('x = 2\n','x = 2\n'),('print(2 ** 33)\n','print(2 ** 33)\n')]




>>>list(enumerate(open('script1.py')))

[(0,'import sys\n'),(1,'print(sys.path)\n'),(2,'x = 2\n'),

(3,'print(2 ** 33)\n')]




>>>list(filter(bool,open('script1.py')))

['import sys\n','print(sys.path)\n','x = 2\n','print(2 ** 33)\n']




>>>import functools,operator

>>>functools.reduce(operator.add,open('script1.py'))

'import sys\nprint(sys.path)\nx = 2\nprint(2 ** 33)\n'

还有些函数其实也变相地使用了迭代功能。例如,sum调用计算任何可迭代对象中的总数,如果一个可迭代对象中任何的或所有的项为真的时候,any和all内置函数分别返回True;max和min分别返回一个可迭代对象中最大和最小的项。如下示例中的所有工具接受任何可迭代对象作为一个参数,并且使用迭代协议来扫描它,但返回单个的结果:

>>>sum([3,2,4,1,5,0])      # sum expects numbers only

15

>>>any(['spam','','ni'])

True

>>>all(['spam','','ni'])

False

>>>max([3,2,5,1,4])

5

>>>min([3,2,5,1,4])

1

list和tuple内置函数,字符串join方法也会使用对象的迭代协议:

>>>list(open('script1.py'))

['import sys\n','print(sys.path)\n','x = 2\n','print(2 ** 33)\n']




>>>tuple(open('script1.py'))

('import sys\n','print(sys.path)\n','x = 2\n','print(2 ** 33)\n')




>>>'&&'.join(open('script1.py'))

'import sys\n&&print(sys.path)\n&&x = 2\n&&print(2 ** 33)\n'




>>>a,b,c,d = open('script1.py')

>>>a,d

('import sys\n','print(2 ** 33)\n')




>>>a,*b = open('script1.py')  # 3.0 extended form

>>>a,b

('import sys\n',['print(sys.path)\n','x = 2\n','print(2 ** 33)\n'])

另外,在函数调用中可能会用到的一种特殊的*arg形式,它也会使用迭代协议把一个集合的值解包为单个的参数:

>>>def f(a,b,c,d): print(a,b,c,d,sep='&')

...

>>>f(1,2,3,4)

1&2&3&4

>>>f(*[1,2,3,4])                  # Unpacks into arguments

1&2&3&4




>>>f(*open('script1.py'))            # Iterates by lines too!

import sys

&print(sys.path)

&x = 2

&print(2 ** 33)
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:23:58  更:2022-03-30 18:26:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:22:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码