Python:一些常见概念及方法

  1. python是脚本语言

  2. IDLE是一个python shell,shell的意思就是外壳,也就是起互动作用的框

  3. BIF–>Built-in Functions 内置函数

  4. ctrl + c强制结束程序

  5. and:两边含0,则返回0;均非0时则返回后一个非0值

  6. or:至少有一个非0时,返回第一个非0

  7. 短路逻辑:x and y 同时为真时,结果为真,当x为假时,不会再去求y的值,直接返回false;or相同

  8. print(“xx”, end=" “)
    print() 默认是打印完字符串会自动添加一个换行符,end=” "会使print用空格代替换行

  9. int()将小数换成整数,结果向下取整
    使得int()按照”四舍五入“的方式取整, int(5.4+0.5)=5, int(5.6+0.5)=6,不管如何,给原数加上0.5

  10. 判断输入的是否是数字
    temp = input(); while not temp.isdigit():…

  11. a<b<c = (a<b)and(b<c)

  12. not or and 的优先级为 not>and>or

  13. 元组拆包:想要将元组类型的表达式赋值给变量,python会对等号右边的值进行拆包。
    )1.将三个变量的值快速相互交换

    a = 1
    b = 2
    c = 3
    a, b, c = b, a, c
    print(a,b,c)
    

    )2.遍历元组或列表组成的序列

    seq = [(1, 2, 3),(4, 5, 6),(7, 8, 9)]
    for a,b,c in seq:
        print('a={0},b={1},c={2}'.format(a,b,c))
    

    )3.从函数返回多个值

  14. 三元操作符: 语句1 if 条件表达式 else 语句2
    对条件表达式进行判断,如果判断结果为真,则执行语句1,并返回执行结果。
    如果判断结果为假,则执行语句2.

    等同于 if 条件:

    ​ 语句一
    ​ else:

    ​ 语句二

  15. 所有多对象,逗号分隔,未明确用符号定义的几个默认的类型都是元组

  16. “鸭子类型”:一个东西走起来像鸭子,叫起来像鸭子,那它就是鸭子。

  17. 在字符串前面加前缀符号r, 表明这些字符都是原生字符。r=raw

  18. encode, decode

  19. pass在python中就是什么都不做的语句

  20. tuple 函数将任意的序列或者迭代器转变为元组
    tuple–元组

    a = tuple([1,2,3])
    print(a)
    (1, 2, 3)
    
  21. 利用 * 可以接收到多个值

values = [1 ,2 ,3 ,4]
a,*b = values
print(b)
b = [2, 3, 4]
  1. 与字典、集合相比,检查列表中是否含有一个值是非常缓慢的,这是因为python在列表中进行了线性逐个扫描,而字典和集合中中python是同时检查所有的元素(基于哈希表)

  2. bisect–平分

    bisect模块实现了二分搜索和已排序列表的插值

    bisect.bisect(a,num)会找到num应当被插入的地方

    bisect.insort(a,num)会将num插入到a中相应的地方

  3. 切片

    )1.负索引可以从序列的尾部进行索引:

    values = [1 ,2 ,3 ,4]
    print(values[-1:])
    [4]
    

    )2.需要对列表或元组进行翻转的时候,可以给步长传值-1

    values = [1 ,2 ,3 ,4]
    print(values[::-1])
    [4, 3, 2, 1]
    
  4. enumerate–列举;枚举

    当需要对数据添加索引的时候,可以使用enumerate构建一个字典,将序列值映射到索引位置上

    list = ['a', 'b', 'c']
    mapping = {
          
          }
    for k,v in enumerate(list):
        mapping[v]=k
    print(mapping)
    
    {
          
          'a': 0, 'b': 1, 'c': 2}
    
  5. zip–拉链;精力;活力

    zip将列表,元组或其他序列的元素配对,新建一个元组组成的列表,生成的列表长度由最短序列决定。

    lis1 = ['a', 'b', 'c']
    lis2 = [1, 2, 3, 4]
    l = list(zip(lis1,lis2))
    print(l)
    [('a', 1), ('b', 2), ('c', 3)]
    

    )1.zip可以用来同时遍历多个序列

    lis1 = ['a', 'b', 'c']
    lis2 = [1, 2, 3, 4]
    for i,(k,v) in enumerate(zip(lis1,lis2)):
        print('{0}:{1},{2}'.format(i,k,v))
    
    0:a,1
    1:b,2
    2:c,3
    

    )2.拆分序列

    lis1 = ['a', 'b', 'c']
    lis2 = [1, 2, 3, 4]
    l = list(zip(lis1,lis2))
    a,b = zip(*l)
    print(a)
    print(b)
    
    a=('a', 'b', 'c')
    b=(1, 2, 3)
    
  6. 字典:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。
    )1.keys和values方法提供了字典键值的迭代器。

    )2.字典A.update(字典B)

    将两个字典合并,对于字典A已经存在的键,如果字典B也含有相同的键,A中的值会被覆盖。

    )3.字典本质上是含有2个元素的元组的集合,字典是可以接受一个2个元素元组的列表作为参数的。

    mapping = dict(zip(range(5),reversed(range(5))))
    print(mapping)
    

    )4.字典的get()和pop方法可以返回一个默认值

    value = Adict.get(key,default_value)
    get方法会在key参数不是字典的键的时候返回defaul_value,默认为None
    

    )5.将字词组成的列表根据首字母分类成包含列表的字典:

    1.
    w = ['apple', 'bat', 'bar', 'atom', 'book','zxw']
    z = {
          
          }
    for ww in w:
        www = ww[0]
        if www in z:
            z[www].append(ww)
        else:
            z[www] =[ww]
    print(z)
    
    
    2.setdefault(键,默认值):如果键不存在于字典中,将会添加键并将值设为默认值。
    w = ['apple', 'bat', 'bar', 'atom', 'book','zxw']
    z = {
          
          }
    for ww in w:
        www = ww[0]
        z.setdefault(www,[]).append(ww)
    print(z)
    
    3.collections模块中的defaultdict用来生成符合要求的字典。
    defaultdict(list):当字典中的key值不存在但被查找时,返回一个空列表
    defaultdict(str):当字典中的key值不存在但被查找时,返回一个空字符串
    defaultdict(int):当字典中的key值不存在但被查找时,返回0
        
    from collections import defaultdict
    w = ['apple', 'bat', 'bar', 'atom', 'book','zxw']
    z = defaultdict(list)
    for ww in w:
        z[ww[0]].append(ww)
    print(z)
    

    )6.字典的键必须是不可变的对象。

  7. 集合:无序且元素唯一(通过set()函数或者{}的方式创建)

    其中的一些方法和数学学的集合差不多,并差交补

  8. 列表解析[],字典解析{},集合解析{}

    列表解析:list = [expr for val in collection if condition]

    字典解析:dict = {key for val in collection if condition}

    集合解析:set = {expr for val in collection if condition}

  9. 嵌套列表推导式–其实就是多层for循环,for循环的部分是根据嵌套的顺序排列的,所有的过滤条件放在尾部。

    result = [name for names 。in alldate for name in names if name.count(‘a’)>=2]

  10. python达到尾部仍然没有遇到return语句时,就会返回None

  11. python的函数是对象。

    )1.函数可以当做参数传递,作返回值

    def express():
        return '嗨'
    
    def fun(a):
        return a
    
    a = fun(express())
    print(a)
    

    )2.函数可以当作容器类型的元素

    def express():
        return '嗨'
    
    li  = [express(), '!']
    
    for val in li:
        print(val)
    
  12. map(function, list):第一个参数 function参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

    li = list(map(lambda x:x**2, [1 , 2, 3, 4]))
    for i in li:
        print(i)
    
  13. 柯里化:部分参数应用

    def add_number(x, y):
        return x+y
    
    add_five = lambda y:add_number(5,y)
    
    print(add_five(1))
    
  14. 生成器–yield关键字

  15. 将多个异常类型写成元组的形式可同时捕获多个异常

    try:
        pass
    except(TypeError,ValueError):
        pass
    
  16. 函数文档–可以了解函数是干嘛的,方便别人,方便自己

    def gcd(x, y):
        "求最大公约数"
        while y:
            t = x % y
            x = y
            y = t
        return x
    法1print(gcd.__doc__)2help(gcd)
    
  17. 在函数中修改全局变量的值,用关键字global

  18. 在嵌套的函数中修改外部函数的局部变量,用关键字nonlocal

    def fun(var):
        var = 1314
        def fun1():
            nonlocal var
            var = str(var) + '520'
            return var
        return fun1()
    
    print(fun(var))
    
  19. 如何访问内部函数

    情况1def fun(var):
        var = 1314
        def fun1():
            nonlocal var
            var = str(var) + '520'
            return var
        return fun1
    
    var = 520
    print(fun(var)())
    
    
    情况2def fun(var):
        var = 1314
        def fun1():
            nonlocal var
            var = str(var) + '520'
            return var
        return fun1()
    
    print(fun(var))
    
  20. filter()和lambda表达式结合

    filter(过滤条件,被过滤的对象)
    print(list(filter(lambda x:not(x%3), range(1,100))))
    
    [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
    
  21. map()和lambda表达式结合–map后面可以跟多个序列作为参数的

    print(list(map(lambda x,y:[x,y],[1,3,5,7,9],[2,4,6,8,10])))
    
    [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
    

猜你喜欢

转载自blog.csdn.net/qq_41458842/article/details/101563189