zoukankan      html  css  js  c++  java
  • python-3高级特征

    1-切片

    L = ["qinzb",'fengyong','bingyan']
    L[0:3] #截取从索引0开始到索引3结束(不包含索引3)
    L[:3]  #如果索引是从0开始则可省略
    L[-1:] #获取最后1个元素
    
    L = list(range(100)) #创建0-99数列
    L[10:20] #[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
    L[:10:2] #[0, 2, 4, 6, 8] 前10个数,每2个取一个:
    L[:] #甚至什么都不写,只写[:]就可以原样复制一个list:
    
    #tuple也可以用切片操作
    (0, 1, 2, 3, 4, 5)[:3] #(0, 1, 2)
    
    #字符串'xxx'也可以看成是一种list
    'ABCDEFG'[:3] #'ABC'
    #Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单

    2-迭代

    d = {'a':1, 'b':2, 'c':3}
    for key in d:
        print(key)
    
    list = ['qinzb','fengyong','bingyan']; 
    for i,value in enumerate(list): #Python内置的enumerate函数可以把一个list变成索引-元素对
        print(i,value)
        
    for x, y in [(1, 1), (2, 4), (3, 9)]:
        print(x, y)
        
    from collections import Iterable 
    isinstance('abc', Iterable) # str是否可迭代, 返回True

    3-列表生成式

    list(range(1,11)) #生成1-11之间的整数
    [x * x for x in range(1,11)] #生成[1x1, 2x2, 3x3, ..., 10x10]
    [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']

      3.2利用两个变量生成list

    d = {'x':'A', 'y':'B', 'z':'C'}
    for k,v in d.items():
        print(k,'=',v)    
    [k+'='+v for k,v in d.items()] #同上面for方法,

     3.3 使用案例

    L = ['Hello', 'World', 'IBM', 'Apple']
    [s.lower() for s in L] #注意L值不会变,返回值会变成小写
    
    import os
    print([d for d in os.listdir('c:\')]) #列出C盘下所有文件夹和目录
    #isinstance(x, str) 判断str是否为字符串,是返回True,否则返回False

     4-生成器

        比如,著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:

        1, 1, 2, 3, 5, 8, 13, 21, 34, ...
       如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator:

    def fib(max):
        n, a, b = 0, 0, 1
        while n < max:
            yield b #print(b)
            a, b = b, a + b
            n = n + 1
        return 'done'
        
    print(list(fib(6))) #打印出来
    for n in fib(6):
        print(n) #打印

    5-迭代器

      我们已经知道,可以直接作用于for循环的数据类型有以下几种:
      一类是集合数据类型,如list、tuple、dict、set、str等;
      一类是generator,包括生成器和带yield的generator function。
      这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
      可以使用isinstance()判断一个对象是否是Iterable对象:
      生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。

    from collections import Iterable
    isinstance([], Iterable) #是否可迭代 True
    isinstance('abc', Iterable)#True
    isinstance({}, Iterable)#True
    isinstance((x for x in range(10)), Iterable) #True
    isinstance(100, Iterable) #False
  • 相关阅读:
    数据库性能测试---前阿里数据库团队资深DBA杨奇龙
    阿里云 MYSQL 与 PG(丁奇与德哥)
    RHEL6中ulimit的nproc限制
    Linux下文件描述符
    Linux中的文件描述符与打开文件之间的关系------------每天进步一点点系列
    5.6 太多分区引起OOM
    Linux lsof命令使用小结
    重现PHP Core的调用栈
    用GDB排查Python程序故障
    mysql 索引优化
  • 原文地址:https://www.cnblogs.com/qinzb/p/9020294.html
Copyright © 2011-2022 走看看