Python高级特性

切片

#切片mylist = [1,2,3,4,5,6,7,8,9,10,11]#取前3个元素mylist[0:3]#[1, 2, 3]#从索引0开始取,还可以省略mylist[:3]# [1, 2, 3]#取倒数第一个元素 mylist[-1]# [11] mylist[-2:]#[10, 11]###字符串也可以使用切片str = 'abcdefg'str[:4]#abcd

迭代
###迭代for...in..###stringfor ch in 'abcdef': print(ch)###listfor a in[1,2,3,4,5,6,7,8]: print(a) ###tuplemyTuple = {'a':1,'b':2,'c':3,'d':4}for key in myTuple: print(key)for k,v in myTuple.items(): print(k,':',v)for value in myTuple.values(): print(value)

#判断一个类型是否支持迭代isinstance('abc',Iterable) #判断字符串是否支持迭代Trueisinstance(123,Iterable)#判断整数是否支持迭代False

列表生成式
#简单单层列表生成式[x * x for x in range(1,11)]# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]#添加判断a = [x * x for x in range(1,11) if x % 2 == 0]# [4, 16, 36, 64, 100]##两层循环a = [m+n for m in 'abc' for nin 'XYZ']#['aX', 'aY', 'aZ', 'bX', 'bY', 'bZ', 'cX', 'cY', 'cZ']#把一个list中所有的字符串变成小写L = ['Hello', 'World', 'IBM', 'Apple'][s.lower() for s in L]

生成器 generator
【Python高级特性】generator:按照某种算法推算出来结果,是一种一边循环一遍计算的机制.
创建一个生成器 生成器和列表生成式的区别在最外层的[]和(),L是一个List, g是一个generator
#创建一个列表生成式 L = [x * x for x in range(10)] #创建一个生成器 g = (x * x for x in range(10));

获取值 next()
next(g)// 0 next(g)// 1 next(g)// 4 next(g)// 9

generator也是一个可迭代的对象 使用generator 基本上都不会使用next(),而是使用for循环来迭代
for a in g: print(a); #0 1 4 9 16 25 36 49 64 81

generator还可以使用函数来实现 实现一个Fibonacci数列(1,1,2,3,5,8,13,21,34,...)
使用函数实现
def fib(max): n,a,b = 0,0,1 while n < max: print(b) a,b = b,a+b n = n + 1

创建生成器
def fibG(max): n,a,b = 0, 0, 1 while n < max: yieldb a,b = b,a+b n = n+1g1 = fibG(10)for s1 in g1: print(s1)

杨辉三角生成器
def triangles(max): a = [1] n = 0; while n < max: yield a; b = a[:] for i in range(len(b) - 1): a[i + 1] = b[i] + b[i + 1] a.append(1) n = n+1for s in triangles(5): print(s)

    推荐阅读