文档章节

Python笔记3——切片,迭代,列表生成式,生成器

Luckyhot
 Luckyhot
发布于 2017/07/17 14:10
字数 649
阅读 7
收藏 0

1.切片:list,tuple,字符串‘xxx’,Unicode字符串u'xxx'都可进行切片操作,并且也支持倒数切片,支持三个参数的‘每隔n个数’切片。

2.迭代:用for循环来遍历给定的list或tuple,这种遍历称为迭代(Iteration),Python中的迭代用for...in来完成。

3.list,tuple,dict,str都可进行迭代。默认情况下,dict迭代的是key。如果要迭代value,可以用 for value in d.itervalues() ,如果要同时迭代key和value,可以用 for k,v in d.iteritems() 。

4.collections模块的Iterable类型,可以判断一个对象是否为迭代对象.(from collections import Iterable/isinstance(123,Iterable) #整数是否可迭代? 返回False)

5.enumerate()函数可以把一个list变成索引-元素对,使得for循环中可以同时迭代索引和元素本身(for i,value in enumrate(['A','B','C']): ......)

6.列表生成式:

即Python内置的简单却强大的用于创建list的生成式。

[x * x for x in range(1, 11)]

[x * x for x in range(1, 11) if x % 2 == 0] if判断,取偶数的平方

[m + n for m in 'ABC' for n in 'XYZ'] 两层循环,生成全排列

7.lower()方法可以把字符串变为小写。把列表L中的字符串都转换为小写:

[s.lower() for s in L]

8.Python内建函数isinstance可以判断一个变量是不是字符串 isinstance(x, str)

9.生成器:受到内存限制,列表的容量有限,列表内的数据级别要是很大,占用的存储空间也很大。如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

10.生成器创建方法:

一、只要把一个列表生成式的 [] 改成 () ,就创建了一个generator.

二、如果一个函数定义中包含 yield 关键字(将函数中的print改成yield),那么这个函数就不再是一个普通函数,而是一个generator.

11.注意:generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用 next() 的时候执行,遇到 yield 语句返回,再次执行时从上次返回的 yield 语句处继续执行。

© 著作权归作者所有

Luckyhot
粉丝 0
博文 7
码字总数 4832
作品 0
杭州
私信 提问
python(六)切片,生成式,生成器,迭代

有了前面的基础,其实掌握的比较扎实的话还是能够做出一些简单的东西的,至少解决一些个基本的数学题还是问题不大,比如说实现一个斐波那契数列,杨辉三角什么的。多数情况下使用循环 for .....

Koma
2015/01/20
2K
0
Making Your Python Codes More Functional

本篇文章是基于Joel Grus: Learning Data Science Using Functional Python视频的笔记。 常用的函数 currying 在Python中实现科里化的最佳方案是。例如以下例子: reduce、map、filter 这几个...

三次方根
09/29
0
0
python生成式生成器详细解答

Python得yield关键字,yield是python中的生成器 了解生成器需要先了解什么是生成式,切片的目的是从已有的列表中切出一部分返回,而生成式的目的则是从无到有的构建一个列表 一个生成式的案例...

开源中国段子手
2015/07/21
88
0
Python迭代器生成器,私有变量及列表字典集合推导式(二)

1 python自省机制 这个是python一大特性,自省就是面向对象的语言所写的程序在运行时,能知道对象的类型,换句话说就是在运行时能获取对象的类型,比如通过 type(),dir(),getattr(),hasattr(),i...

善良小郎君
2018/06/11
0
0
python——高级特性(2)

迭代 在python中迭代是通过for ....in...完成的,只要是可迭代对象都可以迭代 #!usr/bin/python 008000;">-- coding:UTF-8 -- #tuple迭代t=[(1,'a','z'),(2,'b','z')]for x,y,z in t: #enume......

乌云上
2018/05/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
33分钟前
3
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
35分钟前
4
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
今天
7
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
今天
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部