Study Python笔记04 — 高级特性
这些高级特性使得Python相比其它语言来说更加灵活,用更少的代码实现更多的功能。
切片(Slice)
作用:取list或tuple的指定索引范围
>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
>>> L[0:3] ['Michael', 'Sarah', 'Tracy']
L[0:3]
表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。如果第一位数为0可以简写为L[:3]
也可以倒取元素,例如:L[-1] 表示取倒数第一个元素
>> L[-1]
Jack
L[a:b:c]如果为这种格式,则c位表示每隔c位取一个值。例如:s
>>> L[:10:2]
[0, 2, 4, 6, 8]
迭代
任何可迭代对象都可以作用于for
循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for
循环。
列表生成式
是Python内置的非常简单却强大的可以用来创建list的生成式。例如:
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
生成器
相比于列表生成式,生成器式一边循环一边计算的机制。
迭代器
可迭代对象:Iterable
、可以直接作用于for循环的对象
一类是集合数据类型,如list
、tuple
、dict
、set
、str
等;
一类是generator
,包括生成器和带yield
的generator function。
凡是可作用于for
循环的对象都是Iterable
类型;凡是可作用于
next()
函数的对象都是Iterator
类型,它们表示一个惰性计算的序列;集合数据类型如
list
、dict
、str
等是Iterable
但不是Iterator
,不过可以通过iter()
函数获得一个Iterator
对象。Python的
for
循环本质上就是通过不断调用next()
函数实现的,例如:for x in [1, 2, 3, 4, 5]: pass
实际上完全等价于:
# 首先获得Iterator对象: it = iter([1, 2, 3, 4, 5]) # 循环: while True: try: # 获得下一个值: x = next(it) except StopIteration: # 遇到StopIteration就退出循环 break
Study Python笔记04 — 高级特性
https://code666.top/articles/2018/12/09/1544358167842.html