#切片
L = ['A','B','C','D','E']
L[0:3]
#如果第一个索引是0,还可以省略
L[:3]
L[-2:]
L[-2:-1]
L[-10:]
L[:10:2]
L[::5]
L[:]
#list、tuple、字符串都可以切片
#range()
#5开始,10以内的
range(5, 10)
#0开始,10以内的,步长3
range(0, 10, 3)
#-10开始,-100以内的,步长-30
range(-10, -100, -30)
#迭代
#默认情况下,dict迭代的是key。
>>> K ={'a':1 , 'b':2 , 'c':3}
>>> for m in K:
print m
a
c
b
#如果要迭代value,可以用for value in d.itervalues(),
>>> for m in K.itervalues():
print m
1
3
2
#如果要同时迭代key和value,可以用for k, v in d.iteritems()。
>>> for m in K.iteritems():
print m
('a', 1)
('c', 3)
('b', 2)
>>>
#简化代码,前面是输出形式,for后面是语句
>>> K ={'a':'d' , 'b':'e' , 'c':'f'}
>>> [m + '=' + v for m , v in K.iteritems()]
['a=d', 'c=f', 'b=e']
#字符串也是可迭代对象
>>> W = 'asdfgh'
>>> W[0:3]
'asd'
#生成器(Generator)
generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
#斐波那契函数
>>> def fib(max):
n,a,b = 0,0,1
while n < max:
yield b
a,b = b, a+ b
n = n+1
>>> fib(6)
<generator object fib at 0x03843918>
>>> g = fib(6)
>>> for n in g:
print n
1
1
2
3
5
8