-
list、tuple、str 都可以做切片操作,如 l 是一个 list,
l[0:10]
表示取 l 中前 10 个元素,l[3:-2]
表示取 l 中 第 4 到倒数第 2 个元素之前 -
当取得第一个元素为 list 中第一个元素或取得最后一个元素为 list 中的最后一个元素时,可省略
0
,即l[:5]
表示取前 5 个元素,l[-3:]
表示取 list 中最后 3 个元素 -
l[:10:2]
表示对 l 的前 10 个元素,每 2 个取一个 -
'ABCDEF'[:4:2]
的结果为'AC'
-
Python 中的 for 循环可以作用于任何可迭代对象,如 list、tuple、str,甚至 dict
-
默认情况下 dict 迭代的是 key,如要迭代 value,可以用
for value in d.values()
-
for k, v in d.items()
可用于同时迭代 key 和 value -
判断一个对象是否为可迭代对象,可通过 collections 模块的 Iterable 类型判断
-
要使用 Iterable 判断对象是否可迭代,需先通过
from collections import Iterable
导入 Iterable 类型,再使用isinstance(xxx, Iterable)
判断是否可迭代 -
enumerate()
函数可以将 list 转为 索引--元素 对,可在 for 循环中同时迭代索引和元素本身,for i, value in enumerate(['A', 'B', 'C'])
-
列表生成式可以便捷地生成列表,如
[x * x for x in range(3)]
可生成列表[0, 1, 4]
-
列表生成式中在 for 循环后可以加条件判断,如
[x for x in range(10) if x % 2 == 0]
可生成列表[0, 2, 4, 6, 8]
-
列表生成式中可以使用多成循环生成全排列,如
[m + n for m in 'AB' for n in 'XY']
可生成列表['AX', 'AY', 'BX', 'BY']
-
for 循环可同时迭代多个变量,所以列表生成式也可以使用两个变量生成列表,如
[k + '=' + v for k, v in d.items()]
-
generator 为 生成式,可在循环中计算出后续的元素
-
将列表生成式中的
[]
改为()
即可创建出 generator,如g = (x for x in range(10))
-
next()
函数用于获取 generator 的下一个返回值,如首次调用next(g)
得到 0,再次调用得到 1,没有更多元素时抛出 StopIteration 异常 -
for 循环可用于迭代 generator 而避免 StopIteration 错误,如
for n in generator:
-
yield 为 Python 中的一个关键字,用于定义 generator,使用了 yield 关键字的函数为 generator
-
使用
next()
函数获取 generator 的返回值时,每调用一次next(g)
,可获得一次 yield 的返回值 -
杨辉三角可使用 generator 生成
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ def triangles(): l = [1] while True: yield l l = [1] + [l[i-1] + l[i] for i in range(len(l)) if i > 0] + [1]
-
list、tuple、dict、set、str 等数据类型都可用 for 循环处理,这些可以直接作用于 for 循环的对象统称为可迭代对象:Iterable
-
generator 不但可以作用于 for 循环,还可以被
next()
函数调用返回下一个值,为 Iterator -
Iterator 对象表示的是一个数据流,可以看做一个有序序列,在使用过程中不能提前知道序列的长度,只能通过
next()
函数按需获取下一个数据 -
Iterator 的计算是惰性的,只有在需要返回时才计算
-
Iterable 对象可以通过
iter()
函数转为 Iterator 对象
近期热议
推荐标签 标签
-
SVN
29 引用 • 98 回帖 • 692 关注
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。
-
生活
230 引用 • 1454 回帖 • 1 关注
生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。
-
笔记
310 引用 • 794 回帖
好记性不如烂笔头。
-
周末
14 引用 • 297 回帖 • 1 关注
星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。
-
Shell
124 引用 • 74 回帖
Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。
-
锤子科技
4 引用 • 31 回帖 • 8 关注
锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。
-
CodeMirror
2 引用 • 17 回帖 • 161 关注
-
学习
173 引用 • 518 回帖
“梦想从学习开始,事业从实践起步” —— 习近平
-
Sublime
10 引用 • 5 回帖 • 1 关注
Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。
-
webpack
42 引用 • 130 回帖 • 247 关注
webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。
-
Outlook
1 引用 • 5 回帖
-
PostgreSQL
22 引用 • 22 回帖
PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。
-
服务器
125 引用 • 585 回帖 • 1 关注
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
-
App
91 引用 • 384 回帖
App(应用程序,Application 的缩写)一般指手机软件。
-
Vim
29 引用 • 66 回帖
Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。
-
iOS
88 引用 • 139 回帖
iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。
-
SQLite
5 引用 • 7 回帖
SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。
-
TextBundle
1 引用 • 2 回帖 • 82 关注
TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。
-
RYMCU
4 引用 • 6 回帖 • 55 关注
RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。
-
Docker
494 引用 • 928 回帖
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。
-
Spark
74 引用 • 46 回帖 • 568 关注
Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。
-
OpenCV
15 引用 • 36 回帖
-
服务
41 引用 • 24 回帖 • 4 关注
提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。
-
Chrome
63 引用 • 289 回帖 • 2 关注
Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。
-
Markdown
170 引用 • 1529 回帖
Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。
-
Flume
9 引用 • 6 回帖 • 652 关注
Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。
-
钉钉
15 引用 • 67 回帖 • 289 关注
钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于