python中高级特性
来源:互联网 发布:中国经济数据公布时间 编辑:程序博客网 时间:2024/06/06 10:51
切片
取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下:
L = [‘Michael’, ‘Sarah’, ‘Tracy’, ‘Bob’, ‘Jack’]
L[0:3]
L[:3]
L[-2:]
前10个数,每两个取一个:
L[:10:2]
[0, 2, 4, 6, 8]
所有数,每5个取一个:
L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
甚至什么都不写,只写[:]就可以原样复制一个list:
L[:]
[0, 1, 2, 3, …, 99]
tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
(0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)
字符串’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
‘ABCDEFG’[:3]
‘ABC’
‘ABCDEFG’[::2]
‘ACEG’
迭代
如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。
d = {‘a’: 1, ‘b’: 2, ‘c’: 3}
for key in d:
… print(key)
…
a
c
b
for ch in ‘ABC’:
… print(ch)
…
A
B
C
那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
from collections import Iterable
isinstance(‘abc’, Iterable) # str是否可迭代
True
isinstance([1,2,3], Iterable) # list是否可迭代
True
isinstance(123, Iterable) # 整数是否可迭代
False
最后一个小问题,如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:
for i, value in enumerate([‘A’, ‘B’, ‘C’]):
… print(i, value)
…
0 A
1 B
2 C
上面的for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:
for x, y in [(1, 1), (2, 4), (3, 9)]:
… print(x, y)
…
1 1
2 4
3 9
任何可迭代对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环。
列表生成式
d = {‘x’: ‘A’, ‘y’: ‘B’, ‘z’: ‘C’ }
[k + ‘=’ + v for k, v in d.items()]
[‘y=B’, ‘x=A’, ‘z=C’]
[x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
生成器 带有 yield 的函数在 Python 中被称之为 generator(生成器)
要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:
L = [x * x for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
g = (x * x for x in range(10))
- python中高级特性
- 06-python中高级数据类型
- plsql编程中高级特性的应用实例
- python中高级函数应用-sort排序算法
- Python特性
- DP中高级
- Hadoop 中高级
- Python DocString特性
- Python高级特性
- Python的一些特性
- python的特性
- python特性介绍
- Python---ipython特性
- Python的高级特性
- Python特性汇总
- Python高级特性
- Python高级特性
- python语言特性
- postgresql with的使用
- 快速了解数字签名验证及加解密中的一些概念
- 《Linux4.0设备驱动开发详解》笔记--第十五章:Linux I2C核心、总线与设备驱动
- nw.js node-webkit系列(22).nw执行过程及如何获取.nw真实路径
- 计算机图形学(二)输出图元_10_多边形填充区_5_平面方程
- python中高级特性
- Toast动态显示信息
- HDFS文件存储组织
- K3 WISE V14.0安装程序及微正版注册授权文件
- HDU_ACM_1202
- 基本视觉格式化
- Android四大基本组件介绍与生命周期
- Webview打开本地图片选择器
- Android贝塞尔动画实现QQ,虎牙等平台点赞效果