[Python] Advanced features
Slicing
1 |
L[:10:2] |
Iterating
1 |
for x, y in [(1, 1), (2, 4), (3, 9)]: |
List Comprehension
A list comprehension allows you to easily create a list based on some processing or selection criteria.
1 |
myList = [x * x for x in range(1, 11) if x % 2 != 0] |
Generator
Referennce: https://www.liaoxuefeng.com/wiki/1016959663602400/1017318207388128
Create a generator:
1 |
L = [x * x for x in range(10)] |
Create a generator for fibbonacci:
1 |
def (k): # print first k fibbonacci number |
generator和函数的执行流程不一样。函数是顺序执行,遇到return 大专栏 [Python] Advanced features
语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()
的时候执行,遇到yield
语句返回,再次执行时从上次返回的yield
语句处继续执行。
1 |
def odd(): |
118. Pascal’s Triangle
Leetcode: https://leetcode.com/problems/pascals-triangle/
1 |
def generate(self, numRows): |
Iterator
可以直接作用于for
循环的对象统称为可迭代对象:Iterable
. list
, set
, dict
, str
, tuple
.
而生成器不但可以作用于for
循环,还可以被next()
函数不断调用并返回下一个值,直到最后抛出StopIteration
错误表示无法继续返回下一个值了。可以被next()
函数调用并不断返回下一个值的对象称为迭代器:Iterator
All generators
are Interator
, not all Iterable
are Iterator
.(list
, set
, dict
, str
, tuple
)
But we can use iter()
to transform iterables into interator.
1 |
>>> isinstance(iter([]), Iterator) |
Python的Iterator
对象表示的是一个数据流,Iterator
对象可以被next()
函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration
错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()
函数实现按需计算下一个数据,所以Iterator
的计算是惰性的,只有在需要返回下一个数据时它才会计算。
Iterator
甚至可以表示一个无限大的数据流,例如全体自然数。而使用list
是永远不可能存储全体自然数的。
[Python] Advanced features的更多相关文章
- [Angular] Angular Advanced Features - ng-template , ng-container, ngTemplateOutlet
Previously we have tab-panel template defined like this: <ul class="tab-panel-buttons" ...
- Python 高级网络操作 - Python Advanced Network Operations
Python 高级网络操作 - Python Advanced Network Operations Half Open Socket, 一个单向的 socket 被称为 half open sock ...
- python advanced programming (Ⅲ)
IO编程 IO在计算机中指Input/Output.由于程序和运行时数据是在内存中驻留,由CPU来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口. IO编程中,Stream(流)是一个 ...
- python advanced programming ( II )
面向对象编程 简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数.数据封装.继承和多态是面向对象的三大特点. 在Python中,所有数据类型都可以视为对 ...
- python advanced programming ( I )
函数式编程 函数是Python内建支持的一种封装,通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基 ...
- Advanced Features of Delphi DLLs
http://www.delphisources.ru/pages/faq/master-delphi-7/content/LiB0104.html Beside this introductory ...
- [转]Advanced Oracle SQL Developer Features
本文转自:http://www.oracle.com/technetwork/cn/server-storage/linux/sqldev-adv-otn-092384.html Advanced O ...
- python工程设置工具(pipenv)
原始安装 pip工具 --- 包安装工具, 可以从Python包索引hub上安装,也可以使用自定义的hub. 命令: pip install xxx 缺点: 1.命令方式, 一次只能安装一个包, 对于 ...
- Create Advanced Web Applications With Object-Oriented Techniques
Create Advanced Web Applications With Object-Oriented Techniques Ray Djajadinata Recently I intervie ...
随机推荐
- 84.常用的返回QuerySet对象的方法使用详解:select_related, prefetch_related
1.select_related: 只能用在一对多或者是一对一的关联模型之间,不能用在多对多或者是多对一的关联模型间,比如可以提前获取文章的作者,但是不能通过作者获取作者的文章,或者是通过某篇文章获取 ...
- Aras Innovator客户端批量下载关联文件
<button onclick="btnDownload();" id="downfilebtn">批量下载关联文件</button> ...
- vue每次运行起来端口不一致问题
原因:portfinder新发布的版本异常 解决方案:npm install portfinder@1.0.21
- rsync+nfs+sersync实战案例
回顾: 1.rsync 统一备份各个服务器的配置文件或重要文件 系统配置文件 日志文件 系统日志文件 messages.secure.cron 服务日志文件 access_log.access.log ...
- SVN一直清理解决
svn作为我们经常使用的版本管理服务器,在使用过程中经常需要通过clean up操作来完成本地文件与服务器文件信息及版本信息同步,然而有时会在执行清理命令时提示“清理失败,请执行清理”,并且提示的中文 ...
- Centos内核更新
内核更新操作后面补上.暂时记录删除多余内核操作 删除卸载多余内核 1.系统启动时,选择需要保留的内核进入系统,通过uname -a命令查看当前内核版本,以防误删 2. 使用rpm -qa | grep ...
- 类似postman插件
Talend API Tester - Free Edition https://chrome.google.com/webstore/detail/talend-api-tester-free-ed ...
- 2018SEERC Points and Rectangles (CDQ分治)
题:http://codeforces.com/gym/101964/problem/K 分析:https://blog.csdn.net/qq_43202683/article/details/98 ...
- C++ sizeof 运算符
sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小. sizeof 运算符可用于获取类.结构.共用体和其他用户自定义数据类型的大小. 使用 sizeof 的语法如下: ...
- 系统学习Javaweb6----JavaScript2
感想:感觉自己还是只是学到皮毛,仍需继续努力,明天开始需要学习Android和阅读感想的书写. 学习笔记: 2.3.运算符 JavaScript运算符与java运算符基本一致. 这里我们来寻找不同点进 ...