zoukankan      html  css  js  c++  java
  • 学习python的日常3

    python的一些高级特性:

      切片(跟名字一样,把一个完整的东西选取一部分自己想要的去切下来):通过切片可以快速的去除一些元素,只要确定好索引位置,避免的循环导致的多写代码

    数组,元组,字符串都可以用切片来获取元素,[x:y]表示从索引位置x开始索引到y位置,不包括y

    [x:]从x开始索引到结束,[:y]从0开始索引到y为止(不包括y),[x:y:z]z表示每z个数获取一个数。

    迭代:python中的迭代是通过for...in来完成的,只要有迭代对象,都可以迭代,dict的存储不是按照

    list的方式顺序排列,所以可能会不一样的结果顺序,dict中默认迭代key,用for value in x.values()可以

    实现迭代value,用for x,y in d.items()可以同时迭代dict中的key和value,利用collections模块的iterable类型去判断,

    from collections import Iterable
    isinstance('abc',Iterable)
    

    如果是要对list实现类似java的下表循环,python中enumerate函数可以把list变成索引-元素对

    for i,value in enumerate(['A','B','C']):
        print(i,value)
    ...
    0 A
    1 B
    2 C

    for循环中是可以同时引用两个变量的

    for(x,y) in ([1,1],[2,3],[3,9]):
        print(x,y)
    

    列表生成式:列表生成式用很简洁的代码实现一个列表的创建,按照自己的需求,可以对同一变量进行不同操作来生成list,也可以对两个变量同时进行操作来生成list,也可以调用方法来生成需求的list(如果原list中的数据类型是不同的,可以加一个额外的判断条件,if isinstance(x,数据类型)。

    [x(运算符)x for x in 迭代对象 if 判断条件]
    
    [m + n for m in 'ABC' for n in 'XYZ'] 

    [s.xxxx() for s in L]

    生成器:把列表生成改成generator,也可以通过函数实现复杂逻辑的generator,generator的工作原理是在for循环的过程中不断计算出下一个元素,

    并在适当的条件结束for循环。函数改成的generator,遇到return语句或者执行到函数体的最后一行语句,就是结束generator的指令,for循环也随之结束。

    迭代器:能够 被for循环的对象都是Iterable类型,能够作用于next()函数的对象都是Iterator()类型,表示一个惰性计算的序列,无法提前知道序列的长度,只能通过next()函数按需计算出下一个数据,只有在需要返回下一个数据时才会进行计算。

    函数式编程:

    高阶函数中,map()函数接收两个参数,一个函数,一个Iterable,map会作用于序列中的每一个元素,

    并把结果作为新的Iterator返回;   reduce()函数同样是接收两个参数,不同的是reduce利用函数作用于

    元素之后,元素处理的结果会作为新的元素继续参与函数的处理,最后返回一个结果。

    filter()函数是一个筛选器,用法和map()类似,不过最后返回结果的时候只有结果为True是才会返回该结果,其余舍弃掉,返回的也是一个Iterator。

    sorted()函数是一个用于排序的函数作为一个高阶函数,可以接收一个key函数来实现自定义的排序,在keys中排序后,再将相应的value值排序结果展示出来

    反向排序可以传入第三个参数reverse = True。

    返回函数:函数可以返回一个计算结果,也可以返回一个函数,返回一个函数时,这个函数并没有被执行,所以函数中最好不要引用可能变化的变量

    匿名函数:lambda x:x*x   其中x是函数的参数,匿名函数的表达式的结果就是他的返回值。

    装饰器:本身是一个高阶函数,可以返回函数,然后的话可以增强函数的功能,其中functools.wraps可以使得函数的.__name__属性不会被替换

     

  • 相关阅读:
    Hanoi塔
    采药
    进制转换(大数)
    Load Balancing with NGINX 负载均衡算法
    upstream模块实现反向代理的功能
    epoll
    在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树
    粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers
    负载均衡 4层协议 7层协议
    A Secure Cookie Protocol 安全cookie协议 配置服务器Cookie
  • 原文地址:https://www.cnblogs.com/zzy0306/p/7944496.html
Copyright © 2011-2022 走看看