# Python之高级特性

Python中的五种特性：切片，迭代，列表生成式，生成器，迭代器。

# 切片

``````L = list(range(100))

#利用切片取部分元素
print(L[0:10]) #取从索引从0到9的前10个元素
print(L[-10:]) #取最后10个元素
print(L[10:20])#取从索引10到19的10个元素
print(L[:10:2])#从前10个元素中每两个取一个元素
print(L[::10]) #所有元素中每10个取一个元素
``````

``````取从索引从0到9的前10个元素: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

``````

# 迭代(Iteration)

``````from collections import Iterable

print('字符串 is Iterable ?',isinstance('abc',Iterable))
print('list is Iterable ?',isinstance([1,2,3],Iterable))
print('整数 is Iterable ?',isinstance(123,Iterable))
``````

``````字符串 is Iterable ? True
list is Iterable ? True

``````

``````#遍历字符串:
for ch in 'abc':
print(ch)

#遍历list
L = ['A','B','C']
for tmp in L:
print(tmp)

for i,value in enumerate(L):
print(i,':',value)

#遍历dict
d = {'1':'111','2':'222','3':'333'}
for key,v in d.items():
print('key:',key,'value:',v)
``````

# 列表生成式

``````list(range(1, 11))
``````

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

# 生成器(generator)

``````L = [x * x for x in range(1,10)]
print(L)

g = (x * x for x in range(1,10))
print(g)

//运行结果：
[1, 4, 9, 16, 25, 36, 49, 64, 81]
<generator object <genexpr> at 0x10cc14938>
``````

``````def  fib(max):
n,a,b = 0,0,1
while n < max:
yield b
a,b = b, a+b
n = n + 1
return 'done'

print(fib(6))
``````

# 迭代器(Iterator)

``````from collections import Iterator
print('list is Iterator ?',isinstance([], Iterator))
print('dict is Iterator ?',isinstance({}, Iterator))
print('string is Iterator ?',isinstance('123', Iterator))

//运行结果:
list is Iterator ? False
dict is Iterator ? False
string is Iterator ? False
``````

### 推荐阅读更多精彩内容

• 迭代 如果给定一个list或tuple，我们可以通过for循环来遍历这个list或tuple，这种遍历我们称为迭代...
Mr_Bluyee阅读 720评论 0 1
• 本节课纲 可迭代对象 迭代器 生成器Python中内置的序列，如list、tuple、str、bytes、dict...
郭_扬阅读 644评论 0 0
• 迭代、迭代器、生成器、协程、yield、greenlet、gevent、进程线程协程对比、gevent多任务图片下...
Cestine阅读 310评论 0 0
• 一、可迭代对象 可迭代的对象（Iterable）是指使用iter()内置函数可以获取迭代器（Iterator）的对...
code与有荣焉阅读 104评论 0 2
• @[toc] 1.切片 切片即取一个list或tuple的部分元素，是非常常见的操作。 一般形式 从索引0开始取，...