# Python学习笔记——高级特性

1. 切片

Python也支持倒数切片，如L[-2:]，L[-2:-1]。

tuple同样也可以进行切片操作，不过结果是tuple。

2. 迭代

Python可以通过for...in来迭代可迭代的对象。

from collections import Iterable
isinstance('abc', Iterable)

for i, value in enumerate(['a', 'b', 'c']):
print(i, value)

3. 列表生成式

[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']

import os
[d for d in os.listdir('.')]

4. 生成器

g = (x * x for x in range(1, 11))

def odd():
yield 1
yield 3
yield 5

o = odd()
next(o)
# 1
next(o)
# 3
next(o)
# 5

while True:
try:
next(g)
except StopIteration as e:
print(e.value)
break

def triangle():
L = [1]
while True:
yield L
L = [1] + [L[m] + L[m+1] for m in range(0, len(L)-1)] + [1]

n = 0
for t in triangles():
print(t)
n = n + 1
if n == 10:
break

# 输出
# [1]
# [1, 1]
# [1, 2, 1]
# [1, 3, 3, 1]
# [1, 4, 6, 4, 1]
# [1, 5, 10, 10, 5, 1]
# [1, 6, 15, 20, 15, 6, 1]
# [1, 7, 21, 35, 35, 21, 7, 1]
# [1, 8, 28, 56, 70, 56, 28, 8, 1]
# [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]

5. 迭代器

from collections import Iterable
isinstance('a', Iterable)
# True

from collections import Iterator
isinstance('a', Iterator)
# False

Iterator的计算是惰性的，只有在需要返回下一个数据的时候才进行计算。

• 本文已收录于以下专栏：

举报原因： 您举报文章：Python学习笔记——高级特性 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)