美文网首页
Python高级特性

Python高级特性

作者: 纳萨立克 | 来源:发表于2017-10-18 11:15 被阅读7次

    切片

    
    #  切片
    
    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..
    
    ###string
    
    for ch in 'abcdef':
        print(ch)
    
    ###list
    
    for a in  [1,2,3,4,5,6,7,8]:
        print(a)
    ###tuple
    
    myTuple = {'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) #判断字符串是否支持迭代  True
    
    isinstance(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 n  in 'XYZ']  #['aX', 'aY', 'aZ', 'bX', 'bY', 'bZ', 'cX', 'cY', 'cZ']
    
    
    #把一个list中所有的字符串变成小写
    
    L = ['Hello', 'World', 'IBM', 'Apple']
    
    [s.lower() for s in L]
    

    生成器 generator

    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:
            yield  b
            a,b = b,a+b
            n = n+1
    
    g1 = 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+1
    
    
    for s in triangles(5):
        print(s)
        
    

    相关文章

      网友评论

          本文标题:Python高级特性

          本文链接:https://www.haomeiwen.com/subject/anmsuxtx.html